Как проверить простой аргумент блока в rspe c? - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь написать ожидание для этого фрагмента кода ..

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

Я знаю, что сокращение генерирует блок, и до сих пор я пробовал сопоставление удовлетворения, и это текущая версия, с которой я работаю. Я знаю, что этот синтаксис неправильный, и я буду продолжать обновлять то, что я пытаюсь ...

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

1 Ответ

2 голосов
/ 28 апреля 2020

Это подход, который я использовал для решения этой проблемы, но я открыт для других идей по HOW, а не WHY, поскольку тестирование блоков может быть сложным, и я думаю, что это будет отличным примером.

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

Кредит, по которому необходимо получить кредит: https://github.com/rspec/rspec-mocks/issues/1182

...