Я хотел бы иметь функцию Cucumber, тестирующую rememberable функциональность завещания (помнить меня cookie).
Легко проверить помнить меня флажок с помощью капибары, но как я должен моделировать пользователя, возвращающегося в сайт после закрытия их окна?
Я придумал следующий хак для тестирования стойки и немного более чистое использование Selenium API, чтобы протестировать функциональность Devise запоминания в огурце/водосвинке. Он просто говорит драйверу вручную стереть файл cookie сеанса. Поддерживаются не все драйверы, я реализовал только два, которые использовал:
Это предполагает хранение файлов cookie сеанса. Удалите тег @announce из сценария, чтобы избавиться от многословия.
Еще один вариант, предложенный Мэттом Винном в обсуждении списка рассылки, может заключаться в просмотре других хранилищ файлов cookie и удалении их путем запроса или удаления файла:
взято из книги Agile Rails:
config.action_controller.session_store = CGI::Session::PStore (or just :p_store)
config.action_controller.session_options[:tmpdir] = "/Users/dave/tmp"
config.action_controller.session_options[:prefix] = "myapp_session_"
или
rake db:sessions:create
config.action_controller.session_store = :active_record_store
Rails также имеет метод сброса сеанса, но я считаю, что у нас нет доступа к нему, потому что мы не можем подключиться к сеансу rails при тестировании с капибарой.
Надеюсь, это поможет,
Ник
Я использовал email-spec для этого. Мой сценарий выглядит следующим образом:
@allow-rescue
Scenario: Create New Account (Everything cool)
Given I am not authenticated
When I go to register
And I fill in "Name" with "bill"
And I fill in "Email" with "bill@example.com"
And I fill in "Password" with "please"
And I fill in "Password Confirmation" with "please"
And I press "Sign up"
Then "bill@example.com" should receive an email
And I open the email
And I should see "Confirm my account" in the email body
When I follow "Confirm my account" in the email
Then I should see "Your account was successfully confirmed. You are now signed in."
Обратите внимание на украшение @ allow-rescue над сценарием, которое необходимо при использовании Devise.
Надеюсь, это поможет.
Думаю, вы можете выйти из системы с помощью capybara, а затем снова войти в систему, например
Given I am on the login screen
And I select 'Remember Me'
And I click 'login'
Then I should be 'logged in'
When I click 'log out'
Then I should be 'logged out' #=> potentially destroy a session here?
When I click log in
Then I should be logged in
And I should not be directed to the login form.
Это должно использовать текущее состояние файлов cookie cabybara для моделирования этого потока.