【发布时间】:2015-12-21 07:18:03
【问题描述】:
我有一个单元测试,我正在尝试调试以下内容:
describe "#issue!" do
it "delegates to task#issue" do
t = instance_spy("Task")
expect(t).to receive(:issue).with(type: 'create_task')
end
end
它击中的方法来自这个:
def issue!
t = object.tasks.new
t.issue(type: 'create_task')
t
end
当我运行 rspec 时,我收到以下消息:
失败/错误:expect(t).to receive(:issue).with(type: 'create_task') (InstanceDouble(Task) (匿名)).issue({:type=>"create_task"}) 预期:1 次带参数:({:type=>"create_task"}) 收到:0次
基本上,我想知道 instance_spy 是如何工作的?它是创建一个绕过验证而不将其保存到数据库的新对象,类似于使用 .new 还是将其保存到数据库而不经过验证 (.create!(validate: false))?一段时间以来一直在尝试解决此错误。
【问题讨论】:
标签: ruby-on-rails unit-testing rspec