Как получить сообщение об исключении в тесте Behat

Я новичок в behat 3, и я использую его с расширениями symfony2, и все работает хорошо, но мне нужно знать сообщение о выброшенном исключении во время моего теста. Предположим, что я хочу разработать простой блог, поэтому мне нужно перечислить все сообщения, затем я написал функцию и один следующий сценарий:

Feature: Browse posts
In order to browse all posts on the site
As a Visitor on the site
I need a site which shows list of all posts

Scenario: Listing all posts
Given I am on "/post"
And The database is clean
And There are following posts:
| title                       | content                     |
| Testowy tytuł posta         | Testowa treść posta         |
| Testowy tytuł posta numer 2 | Testowa treść posta numer 2 |
Then the response status code should be 200
Then I should see "All posts" in the "title" element
And I should see "Listing all posts"
And I should see "Testowy tytuł posta"

Я реализовал необходимые сниппеты и все тесты пройдены. Хорошо, на этот раз мне нужно просмотреть сообщение в блоге с слагом в URL-адресе, поэтому я добавляю следующий сценарий к вышеуказанной функции:

Scenario: View one post by slug
Given I am on "/post/testowy-tytul-posta"
Then the response status code should be 200
Then I should see "Testowy tytuł posta" in the "title" element
And I should see "Testowa treść posta"

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

Scenario: View one post by slug                                  # src/MyVendor/BlogBundle/Features/blog/listing_posts.feature:18
Given I am on "/post/testowy-tytul-posta"                      # MyVendor\BlogBundle\Features\Context\FeatureContext::visit()
Then the response status code should be 200                    # MyVendor\BlogBundle\Features\Context\FeatureContext::assertResponseStatus()
  Current response status code is 500, but 200 expected. (Behat\Mink\Exception\ExpectationException)
Then I should see "Testowy tytuł posta" in the "title" element # MyVendor\BlogBundle\Features\Context\FeatureContext::assertElementContainsText()
And I should see "Testowa treść posta"

Линия:

Current response status code is 500, but 200 expected

не говорит мне, что было не так, когда я запускаю команду behat с опцией -v (которая увеличивает многословность), она дает мне следующий вывод:

Scenario: View one post by slug                                  # src/MyVendor/BlogBundle/Features/blog/listing_posts.feature:18
Given I am on "/post/testowy-tytul-posta"                      # MyVendor\BlogBundle\Features\Context\FeatureContext::visit()
Then the response status code should be 200                    # MyVendor\BlogBundle\Features\Context\FeatureContext::assertResponseStatus()
  Current response status code is 500, but 200 expected.

  +--[ HTTP/1.1 500 | http://localhost/post/testowy-tytul-posta | KernelDriver ]
  |
  |  <body>
  |          <div id="content">
  |              <div class="header clear-fix">
  |                  <div class="header-logo">
  |                      <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALYAAAA+CAMAAACxzRGDAAAAUVBMVEX////Ly8yko6WLioxkYmVXVVkwLjLl5eWxsLJKSEzy8vJxcHLY2Ni+vb89Oz9XVVh+fH+Yl5n///+xsbLY2Nlxb3KkpKWXlph+fX+LiYy+vr/IZP61AAAAAXRSTlMAQObYZgAABRBJREFUeNrVmtuWoyAQRS1FEEQSzQU7//+hYxUiXsKQZLJWM+chsUloN+WhCuguYoKyYqzmvGasKqH4HyRKxndipcgcumH8qViTM7TkUclcwaHmf5XM0eWq4km1KjdqXfMXJHVe1J3hL8lk5fCGv6wmT+o0d87U+XNrk0Y9nfv+7LM6ZJH5ZBL6LAbSxQ3Q5FDr22Skr8PQSy4n7isnsQxSX4r6pobhjCHHeDNOKrO3yGmCvZOjV9jmt8ulTdXFKdbKLNh+kOMvBzuVRa4Y7MUsdEUSWQe7xxCfZmcwjHU83LqzFvSbJQOXQvptbPnEFoyZtUUGwTeKuLuTHyT1kaP0P6cR01OKvv448gtl61dqZfmJezQmU/t+1R2fJLtBwXV6uWGwB9SZPrn0fKO2WAvQN1PUhHjTom3xgXYTkvlSKHs19OhslETq6X3HrXbjt8XbGj9b4Gi+lUAnL6XxQj8Pyk9N4Bt1xUrsLVN/3isYMug8rODMdbgOvoHs8uAb2fcANIAzkKCLYy+AXRpSU8sr1r4P67xhLgPp7vM32zlqt7Bhq2fI1Hwp+VgANxok59SsGV3oqdUL0YVDMRY7Yg8QLbVUU4NZNoOq5hJHuxEM28Sh/IyUZ8D3reR+yc...
  |
Then I should see "Testowy tytuł posta" in the "title" element # MyVendor\BlogBundle\Features\Context\FeatureContext::assertElementContainsText()
And I should see "Testowa treść posta"                         # MyVendor\BlogB

который выглядит ограниченным и не показывает весь контент ответа. Будет очень полезно, если есть опция, которая принимает только сообщение об исключении - в этом случае:

Entity 'MyVendor\BlogBundle\Entity\Post' has no field 'slug'. You can therefore not call 'findOneBySlug' on the entities' repository

и дать его на выходе вместо респосне.


person Karol F    schedule 11.06.2014    source источник


Ответы (1)


Все, что мне нужно сделать, это добавить в behat.yml следующую строку в разделе Behat\MinkExtensio:

[...]
Behat\MinkExtension:
    show_auto: true
    show_cmd: firefox %s
[...]

Это остановит тест на неудачном шаге и откроет браузер с данным результатом.

person Karol F    schedule 12.06.2014