以后不在Rails 5中的测试环境中工作

时间:2016-09-24 14:45:06

标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-5 rails-activejob

基本上,测试配置确切地设置它在Rails 4中的工作方式(交付方法设置为测试等),除了我已经替换的弃用选项之外,mail仅发送deliver_now,而不是deliver_later。 Deliver_later在开发环境中工作,即使两个环境之间的配置相同。

测试环境邮件程序配置:

    self.navigationController?.navigationBar.barStyle = UIBarStyle.black
    self.navigationController?.isNavigationBarHidden = true

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,而我却试图在

上使用断言
enqueued_jobs.size

断言我的邮件已经排队了。另外,我在邮件类上进行了单元测试,我使用的是deliver_now。

这需要包括ActiveJob:TestHelper

class ActiveSupport::TestCase
  include ActiveJob::TestHelper
end

答案 1 :(得分:1)

测试使用deliver_later(活动作业)的电子邮件的另一个选项是将您想要执行的代码(未排队)和断言放在perform_enqueued_jobs块中。这还需要在类定义

下方的测试文件顶部添加一个include
include ActiveJob::TestHelper

然后如下所示。

perform_enqueued_jobs do
  post article_url, params: { article: { title: "Learn Testing", body: "Lorem Ipsum" } }
  assert_not_equal 0, ActionMailer::Base.deliveries.size
end