Метод assertResponseFormatSame
Метод assertResponseFormatSame относится к классу
KernelBrowser и используется в функциональных тестах
Symfony для проверки формата ответа сервера. Он сравнивает
фактический формат ответа, возвращаемый методом
getResponse, с ожидаемым форматом.
Формат ответа в Symfony определяется по заголовку
Content-Type и может принимать значения, например,
'json', 'html', 'xml'. Метод принимает
один обязательный параметр - ожидаемый формат в виде строки.
Если формат не совпадает, тест завершается с ошибкой.
Синтаксис
assertResponseFormatSame(string $format)
Пример
Давайте создадим тест, который проверяет, что ответ контроллера возвращается в формате JSON:
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class ArticleControllerTest extends WebTestCase
{
public function testJsonFormat(): void
{
$client = static::createClient();
$client->request('GET', '/article');
$this->assertResponseFormatSame('json');
}
}
?>
Если контроллер возвращает JSON-ответ, тест пройдёт успешно. Если формат отличается, будет выброшено исключение с сообщением о несовпадении.
Пример
Давайте рассмотрим контроллер, который возвращает JSON-ответ, и проверим его формат в тесте:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): JsonResponse
{
return $this->json(['title' => 'abcde']);
}
}
?>
Результат выполнения кода:
{"title":"abcde"}
Пример
Давайте проверим, что ответ возвращается в формате HTML:
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class PageControllerTest extends WebTestCase
{
public function testHtmlFormat(): void
{
$client = static::createClient();
$client->request('GET', '/page');
$this->assertResponseFormatSame('html');
}
}
?>
Если контроллер возвращает HTML-страницу, тест пройдёт успешно. В противном случае тест упадёт с сообщением о неверном формате ответа.
Смотрите также
-
метод
assertResponseIsSuccessful,
который проверяет успешность ответа -
метод
assertResponseStatusCodeSame,
который проверяет код статуса ответа -
метод
assertResponseHeaderSame,
который проверяет значение заголовка ответа -
метод
assertResponseHasHeader,
который проверяет наличие заголовка в ответе