Ruby on rails 您能为方法调用中的方法编写存根/模拟/双精度吗?
我的方法如下所示:Ruby on rails 您能为方法调用中的方法编写存根/模拟/双精度吗?,ruby-on-rails,rspec,Ruby On Rails,Rspec,我的方法如下所示: 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和ne
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次
我这样做对吗?(显然不可能,因为我无法将这些存根/模拟传递给正在测试的方法,所以是否可以对其进行测试)您可以执行以下操作:
user_double = double("user")
User.should_receive(:where).and_return(user_double)
user_double.should_receive(:delete)
我正在这样做(见上文),但仍然得到预期的1次,收到0次失败/错误。对于User.should_receive(:where).once可以发布您正在使用的实际代码。您上面的代码不包含User.should\u receive(:where)。