ruby-on-rails – NoMethodError:nil的未定义方法’env’:ActionMailer :: TestCase中的NilClass

我从rails上的
ruby开始并创建了一个示例应用程序.在这个应用程序中,我有一个邮件类和一个测试生成的Mail类.

除了ActionMailer :: TestCase的测试之外,我设法让所有测试工作.

每次运行测试时都会收到错误消息:

NoMethodError: undefined method ‘env’ for nil:NilClass.

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

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

任何人都知道如何解决这个问题?

最佳答案 你包括Devise :: TestHelpers.

您应该为测试创建特定的test_helper,它确实需要Devise.

stackoverflow上的相同问题.

undefined method ‘env’ for nil:NilClass

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

点赞