NoMethodError:nil的未定义方法'env':ActionMailer :: TestCase中的NilClass

时间:2014-02-02 03:52:25

标签: ruby-on-rails ruby testing actionmailer

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

  

NoMethodError:nil的未定义方法'env':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

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

1 个答案:

答案 0 :(得分:2)

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

stackoverflow上的同样问题。

undefined method 'env' for nil:NilClass

我的观点:你不应该使用Devise,因为它会阻止对项目进行写入测试。