Thank you very much for you quick answer! Naturally now it works. Thanks for the long version note too. I already know that, and my code is just a test to play with rspec, but i really appreciate your note.
Thank you for your help, see you the next problem, Roberto. :-) --- Jarkko Laine <[EMAIL PROTECTED]> ha scritto: > > On 6.4.2008, at 14.20, roberto belardo wrote: > > > Hi all, > > here i am again with this stupid problem in > rspecing > > this controller action: > > > > ------------------------------------ > > CommentsController > > def create > > @comment = Comment.new(params[:comment]) > > @user = User.find(params[:user_id]) > > > > [16] @comment.author = @user > > > > @comment.save > > end > > > > ------------------------------------ > > CommentsController Spec > > describe CommentsController, "handling POST > /comments" > > do > > > > before(:each) do > > @user = mock_model(User, :to_param => "2") > > @comment = mock_model(Comment, :to_param => > "1", > > :author => @user) > > > > > > > User.should_receive(:find).at_least(1).times.and_return(@user) > > > > Comment.stub!(:new).and_return(@comment) > > > > end > > > > def post_with_successful_save > > @comment.should_receive(:save).and_return(true) > > > > [34]post :create, :user_id => @user_id, :comment > => {} > > > > end > > > > it "should create a new comment" do > > Comment.should_receive(:new).with({ > > }).and_return(@comment) > > [47]post_with_successful_save > > @comment.author.should be(@user) > > end > > > > end > > > > The frustrating error Rspec gave to me is this: > > > > Spec::Mocks::MockExpectationError in > > 'CommentsController handling POST /comments should > > create a new comment' > > Mock 'Comment_1002' received unexpected message > > :author= with (#<User:0x..fdb9c1a8e > > @name="User_1000">) > > comments_controller.rb:16:in `create' > > comments_controller_spec.rb:34:in > > `post_with_successful_save' > > comments_controller_spec.rb:47: > > > > > > I have tried to google for something like this but > i > > resolved nothing. Could someone help me > understanding > > my fault? > > Short answer: you haven't stubbed the author= method > for the comment > mock, only author. > > A bit longer answer: Are you sure you can trust the > user to only > submit valid user ids? With your current code, > anyone can change the > user_id parameter in the call and fake any user id > she wants. This > might be intentional (if there are only admin users > in your app), just > pointing it out. You can also simplify your action > by just saying > @user.comments.create(params[:comment]) once you > have the user fetched. > > Cheers, > //jarkko > > > > > Thanks in advance, > > Roberto. > > > > > > Inviato da Yahoo! Mail. > > La casella di posta intelligente. > > http://it.docs.yahoo.com/mail/overview/index.html > > _______________________________________________ > > rspec-users mailing list > > rspec-users@rubyforge.org > > http://rubyforge.org/mailman/listinfo/rspec-users > > -- > Jarkko Laine > http://jlaine.net > http://dotherightthing.com > http://www.railsecommerce.com > http://odesign.fi > > > > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users Inviato da Yahoo! Mail. La casella di posta intelligente. http://it.docs.yahoo.com/mail/overview/index.html _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users