Метод assertPageTitleSame
Метод assertPageTitleSame относится к классу
WebTestCase и проверяет, что тег
title страницы полностью совпадает с переданной
строкой. Первым параметром передаётся ожидаемый
заголовок. Если заголовок отличается хотя бы на один
символ, тест завершится ошибкой.
Синтаксис
assertPageTitleSame(string $expectedTitle, string $message = '')
Пример
Давайте создадим контроллер, который отдаёт страницу
с заголовком 'article':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): Response
{
return $this->render('article/index.html.twig');
}
}
?>
Теперь создадим Twig-шаблон с нужным заголовком:
<!DOCTYPE html>
<html>
<head>
<title>article</title>
</head>
<body>
<p>hello</p>
</body>
</html>
Давайте напишем тест, который проверит заголовок страницы:
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class ArticleControllerTest extends WebTestCase
{
public function testIndex(): void
{
$client = static::createClient();
$client->request('GET', '/article');
$this->assertPageTitleSame('article');
}
}
?>
Результат выполнения теста:
Пример
Если заголовок страницы не совпадает с ожидаемым, метод выбрасывает исключение и тест падает:
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class ArticleControllerTest extends WebTestCase
{
public function testIndex(): void
{
$client = static::createClient();
$client->request('GET', '/article');
$this->assertPageTitleSame('user');
}
}
?>
Результат выполнения теста:
Как видно из вывода, метод сравнивает строки посимвольно и показывает разницу между ожидаемым и фактическим заголовком.
Пример
Метод можно использовать вместе с другими проверками в одном тесте:
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class ArticleControllerTest extends WebTestCase
{
public function testIndex(): void
{
$client = static::createClient();
$client->request('GET', '/article');
$this->assertResponseIsSuccessful();
$this->assertPageTitleSame('article');
$this->assertSelectorTextContains('p', 'hello');
}
}
?>
Результат выполнения теста:
Смотрите также
-
метод
assertPageTitleContains,
который проверяет наличие подстроки в заголовке страницы -
метод
assertSelectorTextSame,
который проверяет точное совпадение текста элемента -
метод
assertSelectorTextContains,
который проверяет наличие подстроки в тексте элемента -
класс
WebTestCase,
который предоставляет методы для тестирования страниц