我开始使用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
任何人都知道如何解决这个问题?
答案 0 :(得分:2)
您包括Devise::TestHelpers
。
您应该为测试创建特定的test_helper
,这确实需要Devise。
stackoverflow上的同样问题。
undefined method 'env' for nil:NilClass
我的观点:你不应该使用Devise,因为它会阻止对项目进行写入测试。