Новое в Symfony 6.4: Больше тестируемых утверждений

Источник: «New in Symfony 6.4: More Testing Assertions»
В Symfony 6.4 добавлены новые тестовые утверждения, связанные с селекторами CSS, компонентом HttpClient и темами электронной почты.

Symfony предоставляет пользовательские утверждения для упрощения работы с тестами. Они необязательны, но мы рекомендуем использовать их, для облегчения сопровождения тестов. Например:

// с утверждениями PHPUnit по умолчанию
$this->assertSame(
'This is not a valid coupon code.',
trim($crawler->filter('#errorMessages')->text())
);

// с пользовательскими утверждениями Symfony
$this->assertSelectorTextContains('#errorMessages', 'This is not a valid coupon code.');

В Symfony 6.4 мы вводим новые пользовательские утверждения.

Утверждения любого селектора

Рассмотрим следующий HTML-код:

<ul>
<li>test 1</li>
<li>test 2</li>
<li>test 3</li>
</ul>

Если необходимо протестировать, что любой из элементов <li> содержит текст test 3, то необходимо перебрать все элементы <li> или извлечь все их содержимое:

$nodes = $crawler->filter('ul li')->each(fn(Crawler $node) => $node->text());
$this->assertContains('test3', $nodes);

В Symfony 6.4 можно использовать новые утверждения:

$this->assertAnySelectorTextSame('ul li', 'test 3');
$this->assertAnySelectorTextContains('ul li', 'test');

Утверждения HttpClient

В Symfony 6.4 также добавлено несколько утверждений, гарантирующих, что определённые HTTP-вызовы были инициированы (через компонент HttpClient) во время выполнения приложения:

// method arguments: (string) URL, (string) method, (string|array) body, (array) $headers, (string) http_client ID
$this->assertHttpClientRequest('https://example.com/', 'GET');
$this->assertHttpClientRequest('https://example.com/upload', 'POST', ['foo' => 'bar']);

// method arguments: (string) URL, (string) method, (string) http_client ID
$this->assertNotHttpClientRequest('https://example.com/other');

// method arguments: (int) count, (string) http_client ID
$this->assertHttpClientRequestCount(2);

Утверждения темы электронной почты

Symfony уже предоставляет множество утверждений, связанных с мейлером, таких, как assertEmailCount(), assertEmailTextBodyContains(), assertEmailHasHeader() и т.д. В Symfony 6.4 мы добавляем два новых утверждения, связанных с темами электронных писем:

$this->assertEmailSubjectContains($email, 'Your order was processed successfully');
$this->assertEmailSubjectNotContains($email, 'Your order is pending');

Дополнительные материалы

Предыдущая Статья

Новые возможности CSS облегчающие вашу жизнь

Следующая Статья

Как исправить ошибку 503 Service Temporarily Unavailable на Nginx