在被调用后显式验证mocha期望

时间:2015-03-18 22:53:51

标签: ruby-on-rails-4 mocha expectations spinach

我在Mocha::Hooks#mocha_verify spinach hook中使用after_scenario,在某些情况下效果很好。但是,有很多次我想在一个数据上更新一个值后验证期望值。例如,

class MyModel < ActiveRecord::Base
  after_commit :checked, if: -> (record) { record.previous_changes.key?('checked_at') && record.checked_at? }

  def checked
    Bus.publish_at(checked_at + 1.day, 'checked', id: id)
  end
end

现在我必须在测试运行的"act"部分之前设定期望值,所以我必须做类似的事情:

Bus.expects(:publish_at).with(
  instance_of(ActiveSupport::TimeWithZone),
  'checked',
  has_entries(id: @my_model.id)
).once

@my_model中的测试数据仍然有nil checked_at,因为测试的“行为”部分尚未运行,但我想验证第一个参数是正确。我没有看到这样做的方法但是能够在测试的“act”部分之后验证调用会很好:

Bus.verify(:publish_at).with(
  @my_model.checked_at + 1.day,
  'checked',
  has_entries(id: @my_model.id)
).once

0 个答案:

没有答案