如何在Rspec中测试块内的消息期望?

时间:2017-06-02 17:27:46

标签: ruby rspec

我正在尝试在Rspec的块中测试消息期望:

def a_method
  ALibrary.execute do |batch|
    batch.execute if a == 1 
  end
end

如果我在execute中删除ALibrary方法,如何测试邮件是否已发送到内部execute

allow(ALibrary).to receive(:execute).and_return(a_library_execute)
let(:a_library_execute) {double(execute:true)}

谢谢!

2 个答案:

答案 0 :(得分:0)

我相信您需要使用and_call_original来确保您的收件人会拨打原件。

请参阅:https://relishapp.com/rspec/rspec-mocks/v/2-14/docs/message-expectations/calling-the-original-method

ALibrary.should_receive(:执行).and_call_original

答案 1 :(得分:0)

如果您希望ALibrary.execute返回自己的测试双倍,则可以and_yield响应。

allow(ALibrary).to receive(:execute).and_yield(a_library_execute)
相关问题