ruby-on-rails - 在 RSpec 中,消息期望 (receive) 和测试 spy (have_received) 之间有什么区别?

标签 ruby-on-rails testing rspec mocking

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/

相关文章:

java - 通过在 Eclipse 中突出显示方法名称,将测试方法添加到现有测试用例

ruby-on-rails - 有没有办法强制 Rails 中的测试顺序?

ruby-on-rails - Rails 和 RSpec : Testing controllers with the same name in different namespace (module)

javascript - 当通过元素的 id 与元素一起使用时,jQuery .load() 是否会加载整个页面?

ruby-on-rails - STI,一个 Controller

mysql - 通过关联查询 OR 条件

ruby-on-rails - Rspec: capybara 选择不工作

ruby-on-rails - 获取嵌套哈希的键/值对

testing - 在 Go 中模拟单个方法

ruby-on-rails - 无法在 Rails 控制台上填充测试 postgres 数据库