Новое в Symfony 4.3: Улучшение тестовых утверждений

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