Я новичок в 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
и дать его на выходе вместо респосне.