В приложениях Symfony создавать функциональные тесты просто, благодаря утилитам предоставляемым классом WebTestCase
и утверждениям PHPUnit
. Однако для общих случаев использования (например, для проверки того, что ответ был успешным или он перенаправлен на некоторый URL-адрес) методы assert__()
являются слишком простыми и требуют написания слишком большого количества кода.
Многие разработчики Symfony создали свои собственные служебные классы для тестов, чтобы решить эту проблему. Вот почему в Symfony 4.3 решили добавить наиболее распространенные из них в новый Symfony\Bundle\FrameworkBundle\Test\WebTestAssertionsTrait
, который включен по умолчанию в WebTestCase
, поэтому вам нужно только обновить приложение до Symfony 4.3, чтобы начать использовать их.
Пример проверки, был ли ответ успешным:
// Before
$this->assertSame(200, $client->getResponse()->getStatusCode());
// After
$this->assertResponseIsSuccessful();
Пример проверки, перенаправляет ли ответ на какой-либо URL:
// Before
$this->assertSame(301, $client->getResponse()->getStatusCode());
$this->assertSame('https://example.com', $client->getResponse()->headers->get('Location'));
// After
$this->assertResponseRedirects('https://example.com', 301);
Пример проверки, содержит ли какой-либо элемент какой-либо текст:
// Before
$this->assertContains('Hello World', $crawler->filter('h1')->text());
// After
$this->assertSelectorTextContains('h1', 'Hello World');
Новые утверждения сделают ваши тесты более читабельными и повысят вашу производительность. Вот полный список доступных утверждений:
assertClientCookieValueEquals()
assertClientHasCookie()
assertClientNotHasCookie()
assertClientRawCookieValueEquals()
assertHttpCodeEquals()
assertInputValueEquals()
assertInputValueNotEquals()
assertPageTitleContains()
assertPageTitleEquals()
assertRequestAttributeValueEquals()
assertResponseCookieValueEquals()
assertResponseCookieValueNotEquals()
assertResponseHasCookie()
assertResponseHasHeader()
assertResponseHeaderEquals()
assertResponseHeaderNotEquals()
assertResponseIsSuccessful()
assertResponseNotHasCookie()
assertResponseNotHasHeader()
assertResponseRedirects()
assertRouteEquals()
assertSelectorContainsText()
assertSelectorExists()
assertSelectorNotContainsText()
assertSelectorNotExists()