Can you write stubs/mocks/doubles for methods inside of a method call?
My method looks like:
def some_method(....)
user = User.where("....").first
if !user.nil?
if ..
user.d开发者_运维知识库elete
elsif
user.update_attributes(...)
else
new_user = User.new(...)
new_user.save!
end
end
As you can see both user and new_user are instantiated inside this method.
Is it possible to stub and mock (expectations) for these objects when I am testing the method?
I am trying this:
it "should ...." do
d = double("user double")
d.should_receive(:save!).once
res = User.some_method(....)
end
But I get an error saying expected 1 time and received 0 times.
Am I doing this right? (obviously not, is this possible to test for since I can't pass these stubs/mocks to the method being tested)
You can do something like this:
user_double = double("user")
User.should_receive(:where).and_return(user_double)
user_double.should_receive(:delete)
精彩评论