Как генерировать URL в Behat

Я начал тестировать свое приложение Symfony2 с BehatBundle и MinkBundle. Сейчас пытаюсь написать сценарии, которые проверяют отклик некоторых страниц. Эти страницы доступны через URL-адрес, который содержит идентификатор объектов. Теперь мне интересно, как узнать, какой идентификатор был вставлен 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
Спасибо, но ID генерируется автоматически... так что сеттера нет. - person Michael Sauter; 09.02.2012