设计参数消毒剂不适用于 Cucumber / Capybara / Rspec

Devise Parameter Sanitizer not working with Cucumber / Capybara / Rspec

我正在尝试从 rails 4.0 升级到 4.1

我的所有 sign_in 测试突然失败并出现以下错误:

undefined method `visit' for #<Devise::ParameterSanitizer:0x007fe83cf0b898> (NoMethodError)

有人遇到过这个错误吗?知道如何解决吗? 看起来 step_definitions 的范围指向了错误的对象,但我不知道如何将它指向合理的对象。

步骤都是调用类似这样的方法:

def sign_in_as_client
  visit 'users/sign_in'
  fill_in "user_login", :with => @client_params[:email]
  fill_in "Password", :with => @client_params[:password]
  click_button "Sign in" rescue nil
end

将设计退回到 v3.5.9,这似乎让它消失了。 很高兴听到关于如何使用 devise 4+ 的建议。

sign_in(和其他)方法移动到 ActionDispatch::IntegrationTest class 中为我解决了这个问题:

之前(失败):

class ActionDispatch::IntegrationTest
  ...
end

def sign_in(email='scott.miller@test.com')
  visit "/en/users/sign_in"
  ...
end

(工作后):

class ActionDispatch::IntegrationTest
  ...

  def sign_in(email='scott.miller@test.com')
    visit "/en/users/sign_in"
    ...
  end
end