def deliver_mail
ServiceMailer.activation().deliver_later
end
deliver_mail方法是从某个控制器调用的。
我要进行如下测试-使用黄瓜和水豚进行功能测试。
按“按下一步”按钮 find(“ input.submit”)。click 结束
Feature: Sending a mail to user
Scenario: mail to a user
When I push next button
Then mail should be sent to a user
实际上,当按下“下一个按钮”时,邮件是通过delivery_mail方法发送的。
当我使用liver_now而不是deliver_later时,我可以测试上面的代码。
但是在将delivery_now更改为delivery_later之后,我无法测试。
所以我在下面引用了。
我试图在规格文件中包含“ ActiveJob :: TestHelper”,例如“ include ActiveJob :: TestHelper”。
我这样修改了步骤文件。
step 'push next button' do
perform_enqueued_jobs do
find("input.submit").click
end
end
但仍然无效。
请提供任何提示和建议。
答案 0 :(得分:0)
我正在使用Delayed :: Job在后台发送电子邮件,因此当我测试发送电子邮件时,我有两种单独的测试:
1)rspec
-检查电子邮件正文(通常是mailer中的方法)并发送电子邮件本身
2)cucumber
-检查电子邮件作业是否已排队
在黄瓜中,我有以下代码:
Then(/^A welcome email will be sent$/) do
expect(Delayed::Job.count).to eq(1)
end
我认为没有必要检查黄瓜上的其他东西。
答案 1 :(得分:0)
我建议不要延迟测试中的工作,然后检查应该运行的DJ的结果。
# rails_helper.rb
Delayed::Worker.delay_jobs = false