【发布时间】:2019-03-16 01:12:36
【问题描述】:
def deliver_mail
ServiceMailer.activation().deliver_later
end
deliver_mail 方法是从某个控制器调用的。
我想像下面这样进行测试 - 使用黄瓜和水豚进行功能测试。
step 'push next button' 执行 查找(“输入。提交”)。点击 结束
Feature: Sending a mail to user
Scenario: mail to a user
When I push next button
Then mail should be sent to a user
实际上,当按下'push next button'时,邮件是通过deliver_mail方法发送的。
当我使用deliver_now 而不是deliver_later 时,我可以测试上面的代码。
但是我将deliver_now改为deliver_later后,我无法测试。
所以我在下面引用。
我尝试在规范文件中包含“ActiveJob::TestHelper”,例如“include ActiveJob::TestHelper”。
我修改了这样的步骤文件。
step 'push next button' do
perform_enqueued_jobs do
find("input.submit").click
end
end
但还是不行。
请提供任何提示和建议。
【问题讨论】:
-
那么如何测试邮件是否已发送?使用
expect语句向我们展示您的测试代码。 -
我添加了使用萝卜的期望语句。
标签: ruby-on-rails ruby-on-rails-5 capybara-webkit rails-activejob turnip