Тестирование функции «Запомнить меня» с помощью Behat/Mink

Я пытаюсь проверить функциональность «запомнить меня» с помощью Behat и Mink в проекте Symfony2. Однако мой подход не работает.

Я пробовал следующее:

#behat.yml

Scenario: Checking Remember me
  Given I am on "/"
  When  I fill in "username" with "john"
  And   I fill in "password" with "john"
  And   I check "remember_me"
  And   I press "Login"
  Then  I should be logged in
  When  I restart the browser
  Then  I should be logged in

Scenario: Not Checking Remember me
  Given I am on "/"
  When  I fill in "username" with "john"
  And   I fill in "password" with "john"
  And   I press "Login"
  Then  I should be logged in
  When  I restart the browser
  Then  I should be logged out

Мой контекст функции содержит (среди прочего) следующие методы:

#FeatureContext.php

/**
 * @Then /^I should be logged in$/
 */
public function iShouldBeLoggedIn()
{
    $this->assertElementOnPage('.user-area');
}

/**
 * @Given /^I should be logged out$/
 */
public function iShouldBeLoggedOut()
{
    $this->assertElementNotOnPage('.user-area');
}

/**
 * @When /^I restart the browser$/
 */
public function iRestartTheBrowser()
{
    $driver = $this->getSession()->getDriver();
    $session = new Session($driver);
    $session->start();
    $session->visit('/');
}

Проблема заключается в iRestartTheBrowser(). Это не делает то, что он должен делать. Я ищу способ очистить данные сеанса, но сохранить файлы cookie. Любая помощь?


person sprain    schedule 01.02.2013    source источник
comment
Кстати, конечно, первое, что я попробовал, это сбросить или перезапустить сеанс. Не работает, потому что файлы cookie также удаляются.   -  person sprain    schedule 01.02.2013


Ответы (1)


Я думаю, что ваша спецификация может быть лучше сформулирована как

Scenario: Checking Remember me
    Given I have logged in before and selected remember me
    When I visit "some protected web page"
    Then I should be logged in

Given может установить состояние для запомнить меня, и, возможно, контекст для этого может помочь вам изолировать необходимость сброса сеанса?

Вышеприведенное также легче читать как для неспециалистов, так и для разработчиков.

person Pete Mitchell    schedule 01.02.2013
comment
Хорошая еда для мысли, спасибо. Я новичок в Behat и все еще выясняю, сколько я должен описывать отдельные рабочие процессы и сколько я должен помнить о функциональных тестах. Я дам ему попробовать. - person sprain; 02.02.2013