Метод request класса KernelBrowser
Метод request класса KernelBrowser
выполняет HTTP-запрос к приложению Symfony
в рамках функционального теста. Первым
параметром передаётся HTTP-метод ('GET',
'POST' и т.д.), вторым - URL-адрес.
Третьим параметром можно передать массив
параметров запроса, четвёртым - массив
cookies, пятым - массив файлов, шестым -
массив серверных переменных. Метод возвращает
объект Crawler для анализа ответа.
Синтаксис
$client->request(
string $method,
string $uri,
array $parameters = [],
array $cookies = [],
array $files = [],
array $server = [],
string $content = null
): Crawler
Пример
Давайте выполним GET-запрос к главной странице приложения и проверим ответ:
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class ArticleControllerTest extends WebTestCase
{
public function testIndex(): void
{
$client = static::createClient();
$crawler = $client->request('GET', '/');
$this->assertResponseIsSuccessful();
$this->assertSelectorTextContains('h1', 'hello');
}
}
?>
Результат выполнения теста:
"OK (1 test, 2 assertions)"
Пример
Давайте выполним POST-запрос с параметрами и проверим содержимое ответа:
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class ArticleControllerTest extends WebTestCase
{
public function testCreate(): void
{
$client = static::createClient();
$crawler = $client->request('POST', '/article', [
'title' => 'abcde',
'content' => 'text',
]);
$this->assertResponseIsSuccessful();
$this->assertSelectorTextContains('p', 'abcde');
$response = $client->getResponse();
$content = $response->getContent();
echo $content;
}
}
?>
Результат выполнения кода:
<p>abcde</p>
Пример
Давайте передадим серверные переменные и заголовки в запрос:
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class ArticleControllerTest extends WebTestCase
{
public function testJsonRequest(): void
{
$client = static::createClient();
$crawler = $client->request(
'GET',
'/api/article',
[],
[],
[],
['HTTP_ACCEPT' => 'application/json']
);
$this->assertResponseIsSuccessful();
$this->assertResponseFormatSame('json');
echo $client->getResponse()->getContent();
}
}
?>
Результат выполнения кода:
{"id": 1, "title": "abcde"}
Смотрите также
-
класс
KernelBrowser,
который используется для тестирования приложения -
метод
jsonRequest,
который выполняет JSON-запрос -
метод
getResponse,
который возвращает объект ответа -
метод
getCrawler,
который возвращает объект Crawler