0

我开始在我的测试套件中不断收到以下错误:

NoMethodError: undefined method 'user' for nil:NilClass

这似乎来自我在测试套件中发出的帖子请求。在堆栈跟踪的顶部附近是以下内容:

devise-2.1.2/lib/devise/controllers/helpers.rb:259:in 'handle_unverified_request'
actionpack-3.2.8/lib/action_controller/metal/request_forgery_protection.rb:78:in 'verify_authenticity_token'

这是有道理的,因为我在发布请求中传递的只是一封电子邮件,而不是真实性令牌。但是,我觉得它们应该以某种方式通过设计来处理。我包括Devise::TestHelpers,并且不需要调用 sign_in 来执行此请求。

经过进一步检查,我发现如果我raise Rails.env.inspect,我收到了“发展”。这是设计期望有真实性令牌的原因吗?如何强制它在测试环境中运行(我猜测并尝试$ rake test:functionals -e test无济于事)?

造成这种情况的线路是

post :forgot_password, {:user => { :email => users(:quentin).email }}

4

1 回答 1

1

该错误是由于我在开发中运行的测试。当我让它在测试环境中运行时,错误就消失了。

它没有在测试环境中运行的原因是因为我一直在升级,并且我已经完成了“全部替换”RAILS_ENV并且Rails.env我已经ENV["Rails.env"]在我的测试助手中列出了。我猜 Rails 只是忽略了这一点并默认使用开发环境

于 2012-08-24T17:44:19.190 回答