Behat: Как очистить записи базы данных, созданные в сценарии

1

У меня есть следующий сценарий:

    @mink:selenium2
  Scenario: Login
    Given there are the following users:
      | username | password | email               |
      | admin    | 1234     | [email protected] |
    When I am on "/login"
    And I fill in "username" with "admin"
    And I fill in "password" with "1234"
    And I press "Login"
    Then I should be on "/admin"

Поэтому я хотел бы иметь cleanupUsers как @AfterScenario, где я могу очистить все, что было вставлено в сценарий. Итак, как я могу получить доступ к TableNode пользователям?

Теги:
behat

2 ответа

2
Лучший ответ

Вы можете сохранить своих пользователей в частной собственности, чтобы вы могли получить к ним доступ позже, используя крючок:

private $users;

/**
 * @Given there are the following users:
 */
public function thereAreFollowingUsers(TableNode $table)
{
    $this->users = $table;

    // ...
}

/**
 * @AfterScenario
 */
public function cleanupUsers(AfterScenarioScope $scope)
{
    if (null !== $this->users) {
        // do the cleanups
        // ...

        // reset the property
        $this->users = null;
    }
}
0

Согласно документу: "hooks" также будет иметь доступ к любым свойствам объекта, которые вы задали во время своего сценария ".

Поэтому я думаю, что вам просто нужно сохранить TableNode (или, лучше, только созданные идентификаторы пользователя) в свойстве вашего контекстного класса в коде данного параметра, Given there are the following users шаг Given there are the following users, а затем использовать его в cleanupUsers.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню