[rspec-users] multiple return values with stub

Phillip Koebbe phillipkoebbe at gmail.com
Fri Apr 30 12:34:33 EDT 2010


  I have a helper method

     def login_as(role)
         user = stub_model(User)
         user.stub(:is_administrator?).and_return(role == :admin)
         User.stub(:find_by_id).and_return(user)
         session[:user_id] = user.id
         user
     end

which has been dandy until yesterday. I am now working on an admin 
controller for user maintenance, and in it, I want to do this:

         before :each do
             login_as(:admin)
             @some_user = stub_model(User, valid_user_hash)
             User.stub(:find_by_id).and_return(@some_user)
         end

which obviously conflicts with the stub in login_as.

I have experimented with adding .with() to each one, hoping that 
multiple stubs would be created, but that does not seem to be the case. 
Is there a way to stub the same method but have it return different 
values? Or can someone suggest a better way of handling this situation?

Peace,
Phillip


More information about the rspec-users mailing list