Oh yes, forgot to add that, if you do self.current_user = user, it will call your mock as expected.
Sorry for the multitude of emails. 2010/6/7 Vinícius Baggio Fuentes <vinibag...@gmail.com> > If current_user is an instance variable (as if you did attr_accessor > :current_user), you should try: > @current_user = @user > > If not, you should try invoking with self: > self.current_user = @user > > because ruby is creating a local variable named current_user instead of > invoking #current_user=. When you do call self, which refers to the object > itself, it will use normal method lookup, that will find your > #current_user=. > > On Mon, Jun 7, 2010 at 6:43 PM, Marcelo de Moraes Serpa < > celose...@gmail.com> wrote: > >> Hello, >> >> This could be rephrased as -- How to test calls of special assigment >> (setter) methods? >> >> I am trying to test the assigmnet of a user object to the >> current_user=(new_user) method. It is part of an authentication process and >> finally the object is assigned to the session through this method. I have >> tried: >> >> controller.should_receive(:current_user=).with(@user) >> post :create, @params >> >> And the output is: >> >> expected :current_user= with (#<User id: 605 <.... snip ...> ) once, but >> received it 0 times >> >> I do not understand, since current_user=(new_user) is actually being >> called by the controller: >> >> def create >> <snip> >> current_user = @user >> <snip> >> end >> >> Why's that? >> >> Thanks, >> >> Marcelo. >> >> >> _______________________________________________ >> rspec-users mailing list >> rspec-users@rubyforge.org >> http://rubyforge.org/mailman/listinfo/rspec-users >> > >
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users