我设置了一个模拟对象并告诉它期望检查 nil 并返回 false:
status = double('status')
status.should_receive(:nil?).and_return(false)
我只希望电话为零?发生一次,但我在我的 rspec 测试中遇到错误,说状态接收为零?两次。
有没有办法让 rspec 显示每个呼叫发生的位置/方式?
添加“--backtrace”选项不起作用。
我设置了一个模拟对象并告诉它期望检查 nil 并返回 false:
status = double('status')
status.should_receive(:nil?).and_return(false)
我只希望电话为零?发生一次,但我在我的 rspec 测试中遇到错误,说状态接收为零?两次。
有没有办法让 rspec 显示每个呼叫发生的位置/方式?
添加“--backtrace”选项不起作用。
尝试这样的事情:
status.should_receive(:nil?).twice { puts caller; false }
这告诉 rspec 允许两次调用并每次调用关联的块。该caller
方法会生成一个完整的回溯,您应该能够对其进行分析stdout
。我们还会返回false
以留在我们正在测试的代码路径上。
如果这两个回溯很难区分并且您只对第二个(意外)调用感兴趣,那么设置两个连续的期望:
status.should_receive(:nil?).and_return(false)
status.should_receive(:nil?) { puts caller; false }
这里 double 将在第一次调用时返回 false 并在第二次调用块。
设置期望响应的参考:
https ://github.com/rspec/rspec-mocks#setting-responses