Метод reload класса KernelBrowser
Метод reload класса KernelBrowser повторно выполняет последний HTTP-запрос, который был отправлен через клиент. Метод не принимает обязательных параметров и возвращает объект Crawler с содержимым нового ответа. Его удобно использовать, когда нужно проверить поведение приложения после изменения данных в базе или после выполнения действий, влияющих на состояние сессии.
В отличие от повторного вызова метода request, метод reload сохраняет cookies, заголовки и параметры исходного запроса. Это позволяет имитировать повторное открытие той же страницы уже авторизованным пользователем.
Синтаксис
$crawler = $client->reload();
Пример
Давайте создадим тестовый класс, который отправляет запрос к странице, а затем перезагружает её:
<?php
namespace App\Tests\Controller;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class ArticleControllerTest extends WebTestCase
{
public function testReload(): void
{
$client = static::createClient();
$client->request('GET', '/article');
$crawler = $client->reload();
$this->assertResponseIsSuccessful();
$this->assertSelectorTextContains('h1', 'article');
}
}
?>
Пример
Давайте перезагрузим страницу после изменения данных в базе данных:
<?php
namespace App\Tests\Controller;
use App\Entity\Article;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class ArticleControllerTest extends WebTestCase
{
public function testReloadAfterChange(): void
{
$client = static::createClient();
$client->request('GET', '/article');
$this->assertSelectorTextContains('h1', 'hello');
$em = static::getContainer()->get(EntityManagerInterface::class);
$article = $em->getRepository(Article::class)->findOneBy([]);
$article->setTitle('abcde');
$em->flush();
$client->reload();
$this->assertSelectorTextContains('h1', 'abcde');
}
}
?>
Смотрите также
-
класс
KernelBrowser,
который используется для тестирования HTTP-запросов -
метод
request,
который выполняет HTTP-запрос к приложению -
метод
followRedirect,
который выполняет переход по редиректу -
метод
getResponse,
который возвращает объект ответа