Rails:Cucumber + Capybara - 如何在visit()中添加http方法

Hom*_*ith 3 ruby-on-rails http cucumber capybara

我有这个步骤定义:

Given /^I am not logged in$/ do
  visit '/users/sign_out'
end
Run Code Online (Sandbox Code Playgroud)

rake路线给了我这个:

destroy_user_session DELETE /users/sign_out(.:format)      devise/sessions#destroy
Run Code Online (Sandbox Code Playgroud)

那么..我该怎么测试呢?有什么办法可以在Capybara中添加HTTP方法吗?

我这样说是因为我在测试中一直收到这个错误:

 No route matches [GET] "/users/sign_out" (ActionController::RoutingError)
Run Code Online (Sandbox Code Playgroud)

Nob*_*ita 8

更改:

config.sign_out_via = :delete
Run Code Online (Sandbox Code Playgroud)

对于

config.sign_out_via = Rails.env.test? ? :get : :delete
Run Code Online (Sandbox Code Playgroud)

config/initializers/devise.rb

Rails-Devise-Rspec-Cucumber教程中所述,通过这样做,您将使Devise对注销操作执行GET请求.而这恰好将发生在测试环境中......