我开始在我的测试套件中不断收到以下错误:
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 }}