RSpec如何让should_receive检查呼叫,但让它运行

时间:2012-02-02 05:56:47

标签: ruby rspec

在我的RSpec中我有:

discount.should_receive(:ended=).with(true)

在我的模特中,我有:

self.ended = document.at_css('#buy_now').blank?
  if not ended?
    ...

我想检查ended=是否已被调用,但是我的规范会检查它是否已被调用,然后跳过实际更新,因此未正确设置结束。

我希望它实际运行,以便后续逻辑可以正常运行。如果可能的话,有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用期望更改来验证结束是否已正确更新,而不会阻止实际更新。

expect {
  # code which changes ended to true
}.to change(discount, :ended).from(false).to(true)

https://www.relishapp.com/rspec/rspec-expectations/v/2-0/docs/matchers/expect-change