[rspec-users] multiple return values with stub
David Chelimsky
dchelimsky at gmail.com
Fri Apr 30 12:54:45 EDT 2010
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 at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20100430/4494aef1/attachment.html>
More information about the rspec-users
mailing list