【发布时间】:2016-03-08 08:16:03
【问题描述】:
我目前在控制器中有一些 Rails 代码,可以执行以下操作:
def update
@local.update(...)
@local.save!
Exchange::publish_to_exchange('event-title', Serializer.new(@local).serializable_hash)
render ...
end
我想测试该消息是否已使用正确的消息名称和序列化、更新的对象发布。所以,在控制器规范中我做了这样的事情:
let(:local) { create(:local_class) }
it 'publishes serialized version to exchange' do
expect(Exchange).to receive(:publish_to_exchange).with('event-title', Serializer.new(local).serializable_hash)
put :update, params
end
但是,这显然是行不通的,因为它将本地的未更新的、可序列化的哈希与更新的版本进行比较。我想知道在“put :update, params”行之后是否有延迟检查匹配器,以便我可以测试这种情况。
【问题讨论】:
标签: ruby-on-rails ruby rspec