Метод assertRequestAttributeValueSame
Метод assertRequestAttributeValueSame относится к классу
WebTestCase и проверяет, что атрибут запроса
с указанным именем имеет ожидаемое значение. Первым
параметром передаётся имя атрибута, вторым - ожидаемое
значение. Метод удобно использовать для проверки
параметров маршрута, которые Symfony сохраняет в атрибутах
запроса.
Синтаксис
assertRequestAttributeValueSame(string $name, string $expectedValue)
Пример
Давайте создадим контроллер, который принимает параметр
slug из URL и возвращает его в ответе:
<?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/{slug}', name: 'article_show')]
public function show(string $slug): Response
{
return new Response($slug);
}
}
?>
Теперь напишем тест, который проверяет, что атрибут
slug запроса равен строке 'abcde':
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class ArticleControllerTest extends WebTestCase
{
public function testShow(): void
{
$client = static::createClient();
$client->request('GET', '/article/abcde');
$this->assertRequestAttributeValueSame('slug', 'abcde');
}
}
?>
Результат выполнения теста:
OK (1 test, 1 assertion)
Пример
Давайте создадим контроллер с двумя параметрами маршрута
category и id:
<?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/{category}/{id}', name: 'article_item')]
public function item(string $category, int $id): Response
{
return new Response($category . ' ' . $id);
}
}
?>
Напишем тест, который проверяет оба атрибута запроса:
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class ArticleControllerTest extends WebTestCase
{
public function testItem(): void
{
$client = static::createClient();
$client->request('GET', '/article/user/5');
$this->assertRequestAttributeValueSame('category', 'user');
$this->assertRequestAttributeValueSame('id', '5');
}
}
?>
Результат выполнения теста:
OK (1 test, 2 assertions)
Смотрите также
-
метод
request,
который выполняет запрос к приложению -
метод
createClient,
который создаёт клиент для тестирования -
метод
assertRouteSame,
который проверяет имя маршрута -
метод
assertResponseIsSuccessful,
который проверяет успешность ответа