On Apr 30, 2010, at 11:34 AM, Phillip Koebbe wrote: > 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?
Two ways to do it: 1 is documented here; http://rspec.info/documentation/mocks/stubs.html The other: User.stub(:find_by_id) do |id| if id == $admin_id admin_user else non_admin_user end end or some such. HTH, David > > Peace, > Phillip > _______________________________________________ > 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