首页 > 解决方案 > 如何在 Rspec 中测试一个简单的块参数?

问题描述

我正在尝试为这段代码写一个期望:

Sidekiq::Queue.all.each(&:clear)

我知道速记会生成一个块,到目前为止我已经尝试过满足匹配器,这是我正在使用的当前版本。我知道这种语法不正确,我会不断更新我尝试的内容:

expect(Sidekiq::Queue).to receive_message_chain(:all, :each) { &:clear }.and_return(true)

标签: ruby-on-railsrspec

解决方案


这是我用来解决这个问题的方法,但我对其他想法持开放态度,HOW因为WHY测试块可能很困难,我认为这将是一个很好的例子。

expect(Sidekiq::Queue).to receive_message_chain(:all, :each) do |&block|
  expect(block).to be(Proc.new(&:clear))
end

信用到期:https ://github.com/rspec/rspec-mocks/issues/1182


推荐阅读