在RSpec (特别是 rspec-mocks ), Message Expectations 之间有什么区别?和 Test Spies ?它们看起来很相似,并且在自述文件中作为单独的部分紧挨着出现。
即之间有什么区别:
expect(validator).to receive(:validate) # message expectation
和
expect(validator).to have_received(:validate) # test spy
最佳答案
可以在任何 对象上设置消息预期,并表示声明该对象将来 将要发生(或不发生)某事。如果在后续测试执行期间违反了预期,则测试将在违反发生时失败。如果在测试结束时没有达到预期,则测试也将失败。
have_received
系列方法仅适用于测试替身并检查替身过去发生了什么,从替身创建到当前方法调用。它在那个时间点成功或失败。 “test spy”这个词有点误导,因为对这种后视机制的支持在这一点上是 rspec-mocks 的标准部分。您不需要做任何“特别”的事情来创建“测试 spy ”。
关于ruby-on-rails - 在 RSpec 中,消息期望 (receive) 和测试 spy (have_received) 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21210811/