我正在尝试在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)}
谢谢!
答案 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)