在我阅读rspec时,听起来好像做了......
expect_any_instance_of(Mail).to receive(:deliver)
...应该使rspec用它自己替换传递方法,以便实际调用传递方法。但在我的情况下,当我这样做时,我在测试中得到以下错误,这使我相信它仍然被调用。
Failure/Error: task.send_email_alert('test', dummy)
Errno::ECONNREFUSED:
Connection refused - connect(2) for "localhost" port 25
这是我的方法
def send_email_alert(alert_body, alert)
mail = Mail.new do
from alert.send_emails_from
to alert.email_address
subject 'New job posted from ' + alert.job_board_name
body alert_body
end
mail.deliver!
end
这是考验。
context 'send_email_alert' do
it 'creates an email and calls the deliver method' do
dummy = OpenStruct.new(send_emails_from: 'test@test.com', job_board_name: 'test', email_address: 'test@test.com')
expect(Mail).to receive(:deliver).and_return(true)
task.send_email_alert('test', dummy)
end
end
答案 0 :(得分:0)
您已经存根deliver
,但您没有存根deliver!
,这是您调用的方法。它们是不同的方法。