#ruby-on-rails #devise #cucumber #capybara
#ruby-on-rails #разработка #cucumber #capybara
Вопрос:
В этом примере: https://github.com/RailsApps/rails3-devise-rspec-cucumber
Я получаю сообщение об ошибке, потому что выполняю visit(‘/users/ sign_out’) (в capybara..to убедитесь, что пользователь вышел из системы) не удается. Проблема в том, что нет маршрута для перехода к этому пути, поскольку devise изменил его на DELETE (а capybara не поддерживает PUT и DELETE без некоторых обходных путей js)
Каковы ваши предложения по выполнению шага «Учитывая, что я являюсь пользователем, не прошедшим проверку подлинности»? как вы, ребята, обычно это делаете? Я надеюсь, что есть простой выход из этого, например, 1-2 строки ruby.
на данный момент я просто делаю :
Given "i am an unauthenticated user" do
@user == nil
end
но, похоже, он ничего не тестирует.
Ответ №1:
Да, это было немного больно для многих людей.
Самый простой способ обойти это — добавить это в ваш файл /config/initializers/devise.rb:
config.sign_out_via = Rails.env.test? ? :get : :delete
При этом будет использоваться старый метод get для вашей тестовой среды и delete для всех остальных.
Комментарии:
1. было бы лучше, если бы это было помещено в config/environments/test.rb? возможно ли это или лучше просто сделать вышеописанное?
2. Да — помещение его в environments / test также должно работать нормально (config.sign_out_via = :get). В зависимости от того, что вы предпочитаете на самом деле. … И спасибо. 🙂