我正在使用菠菜钩Mocha::Hooks#mocha_verify
,在某些情况下效果很好。但是,有很多时候我想在一条数据上更新一个值后验证一个期望。例如,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
现在我必须在测试的“行为”部分运行之前设置期望,所以我必须做一些类似的事情:
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