【发布时间】:2012-08-23 20:05:33
【问题描述】:
我开始在我的测试套件中不断收到以下错误:
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 }}
【问题讨论】:
标签: ruby-on-rails forms authentication testing devise