如何在 Rspec 中测试一个简单的块参数?

Chr*_*ugh 2 rspec ruby-on-rails

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

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

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

expect(Sidekiq::Queue).to receive_message_chain(:all, :each) { &:clear }.and_return(true)
Run Code Online (Sandbox Code Playgroud)

Chr*_*ugh 5

这是我用来解决这个办法,但我愿意接受其他的想法上HOWWHY作为测试块可以是艰难的,我认为这将是一个很好的例子。

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

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