我的方法如下:
def some_method(....)
user = User.where("....").first
if !user.nil?
if ..
user.delete
elsif
user.update_attributes(...)
else
new_user = User.new(...)
new_user.save!
end
end
正如您所看到的,在此方法中实例化了user和new_user。
在测试方法时,是否可以对这些对象进行存根和模拟(期望)?
我正在尝试这个:
it "should ...." do
d = double("user double")
d.should_receive(:save!).once
res = User.some_method(....)
end
但是我得到一个错误说预期1次并收到0次。
我这样做了吗? (显然不是,这是否可以测试,因为我无法将这些存根/模拟传递给正在测试的方法)
答案 0 :(得分:0)
您可以这样做:
user_double = double("user")
User.should_receive(:where).and_return(user_double)
user_double.should_receive(:delete)