【问题标题】:NoMethodError: undefined method 'env' for nil:NilClass in ActionMailer::TestCaseNoMethodError:ActionMailer::TestCase 中 nil:NilClass 的未定义方法 'env'
【发布时间】:2014-02-25 17:25:59
【问题描述】:

我开始使用 ruby​​ on rails 并创建了一个示例应用程序。在这个应用程序中,我有一个邮件类和一个测试生成的邮件类。 除了来自 ActionMailer::TestCase 的测试之外,我设法让所有测试正常工作。 每次我运行测试时都会收到一条错误消息:

NoMethodError: nil:NilClass 的未定义方法“env”。

我生成的邮件测试方法如下所示:

test "new_project" do
    mail = ProjectMailer.new_project
    assert_equal "New project", mail.subject
    assert_equal ["to@example.org"], mail.to
    assert_equal ["from@example.com"], mail.from
    assert_match "Hi", mail.body.encoded
end

我的 test_helper 中有

class ActionController::TestCase
  include Devise::TestHelpers
end

class ActionMailer::TestCase
      include Devise::TestHelpers
    end

class ActiveSupport::TestCase
  ActiveRecord::Migration.check_pending!

  include Devise::TestHelpers
  fixtures :all
end

有人知道怎么解决吗?

【问题讨论】:

    标签: ruby-on-rails ruby testing actionmailer


    【解决方案1】:

    您包括Devise::TestHelpers。 您应该为测试创建特定的test_helper,这确实需要设计。

    关于stackoverflow的同样问题。

    undefined method 'env' for nil:NilClass

    我的意见:你不应该使用 Devise,因为它会阻止为项目编写测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-11
      • 2011-07-27
      • 2013-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多