NoMethodError:控制器测试中未定义的方法`assert_emails'

时间:2017-02-14 10:49:33

标签: ruby-on-rails testing ruby-on-rails-5

根据Rails documentation,方法assert_emails允许转换语法:

assert_difference ->{ ActionMailer::Base.deliveries.size }, +1 do
  post :method_that_should_send_email
end

assert_emails 1 do
  post :method_that_should_send_email
end

我觉得好多了,因为我不必每次都复制粘贴长语法。

但是,在使用上述代码时,我的控制器测试中出现以下错误:

NoMethodError: undefined method `assert_emails'

我认为这是因为该方法仅适用于邮件程序测试。

有没有办法让它也可用于控制器测试?是否有一个很好的理由为什么默认情况下不可用?有没有更好的方法来测试调用特定路由会导致发送电子邮件?

感谢。

1 个答案:

答案 0 :(得分:1)

我在常规测试(而不是$v-font-family: MyRobotoFont, arial, sans-serif )中尝试使用assert_emails时遇到了同样的问题。

当我将ActionMailer::TestCase包含在我的测试类中时,帮助程序开始工作。

ActionMailer::TestHelper

我相信这也适用于您的控制器测试。