В приложениях 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()