I tink it's @orders should be an array of orders from
current_user.orders.
describe OrdersController do
include Devise::TestHelpers
def mock_order(stubs={})
@mock_order ||= mock_model(Order, stubs).as_null_object
end
describe "GET index" do
it "assigns user's orders to @orders" do
current_user.stub!(:orders).and_return([mock_order])
get :index
assigns(:orders).should eq([mock_order])
end
end
end
I tried with this code but the test failed with this error :
Failure/Error: current_user.stub!(:orders).and_return([mock_order])
undefined local variable or method `current_user' for
#<RSpec::Core::ExampleGroup::Nested_7::Nested_1:0x000000057059e0>
On 26 août, 15:28, David Chelimsky <[email protected]> wrote:
> On Aug 24, 2010, at 6:51 PM, Titinux wrote:
>
>
>
> > Hello,
>
> > I'm new in using RSpec and I can't figured out to spec this controller
> > action.
>
> > class OrdersController < ApplicationController
> > before_filter :authenticate_user!
>
> > def index
> > respond_with(@orders = current_user.orders)
> > end
> > end
>
> > When I want to spec this "@assets = Asset.all" I use "Asset.stub(:all)
> > { [mock_asset] }" as I read in the RSpec book but with
> > "current_user.orders" I don't know how to do.
>
> > NB: I'm using Rails 3.0.0.rc2 and RSpec 2.0.0.beta.20
>
> What is the behaviour you want to specify?
> _______________________________________________
> rspec-users mailing list
> [email protected]http://rubyforge.org/mailman/listinfo/rspec-users
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users