Как да генерирате URL адреси в Behat

Започнах да тествам приложението си Symfony2 с BehatBundle и MinkBundle. Сега се опитвам да напиша сценарии, които проверяват отговора на някои страници. Тези страници са достъпни чрез URL адрес, който съдържа идентификатора на обектите. Сега се чудя как да разбера кой ID е вкаран от Doctrine.

Ето един пример:

Background:
    Given There is no "Category" in database
      And I have a category "Todo Lists"

  Scenario: The category can be viewed
    Given I am on "/category/<id here>"
     Then I should see "Todo Lists"

Проблемът е, че не знам как да разбера идентификатора на вмъкнатата категория. Възможно ли е това с Behat / Mink?


person Michael Sauter    schedule 09.02.2012    source източник


Отговори (2)


Добавете персонализирана стъпка във вашия контекстен клас, нещо като това:

/**
 * @Given /^I am on the "([^"]*)" category page$/
 * @When /^I go to the "([^"]*)" category page$/
 */
public function gotoCategoryPage($categoryName)
{
    // find category by $categoryName here
    // $category = ...

    $s = $this->getSession();
    $s->visit($this->locatePath('/category/'.$category->getId());
}
person Inoryy    schedule 09.02.2012
comment
Страхотно! Виждам, че не е било толкова трудно в крайна сметка ;) - person Michael Sauter; 09.02.2012

Можете да промените своето Given изявление с нещо като:

Given There is no "Category" in database
  And I have a category "Todo lists" with id "1"

Scenario: The category can be viewed
Given I am on "/category/1"
 Then I should see "Todo Lists"

И след това задайте идентификатор за категория, както вече правите за име.

person Anton Babenko    schedule 09.02.2012
comment
Благодаря, но идентификаторът се генерира автоматично ... така че няма настройка. - person Michael Sauter; 09.02.2012