тестирование разработки пользователя, не прошедшего проверку подлинности, с помощью cucumber

#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). В зависимости от того, что вы предпочитаете на самом деле. … И спасибо. 🙂