Как я могу использовать Огурец для тестирования функциональности Завещания Rememberable?

Я хотел бы иметь функцию Cucumber, тестирующую rememberable функциональность завещания (помнить меня cookie).

Легко проверить помнить меня флажок с помощью капибары, но как я должен моделировать пользователя, возвращающегося в сайт после закрытия их окна?

7
задан srboisvert 12 August 2010 в 13:10
поделиться

3 ответа

Я придумал следующий хак для тестирования стойки и немного более чистое использование Selenium API, чтобы протестировать функциональность Devise запоминания в огурце/водосвинке. Он просто говорит драйверу вручную стереть файл cookie сеанса. Поддерживаются не все драйверы, я реализовал только два, которые использовал:

http://gist.github.com/484787

Это предполагает хранение файлов 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 при тестировании с капибарой.

Надеюсь, это поможет,

Ник

1
ответ дан 7 December 2019 в 18:38
поделиться

Я использовал 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.

Надеюсь, это поможет.

0
ответ дан 7 December 2019 в 18:38
поделиться

Думаю, вы можете выйти из системы с помощью 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 для моделирования этого потока.

0
ответ дан 7 December 2019 в 18:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: