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:
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 S.
<[email protected]