Метод back класса KernelBrowser
Метод back класса KernelBrowser
выполняет возврат на предыдущую страницу,
имитируя нажатие кнопки «назад» в браузере.
Метод возвращает объект Crawler,
позволяющий анализировать содержимое
предыдущей страницы. Он не принимает
параметров и использует историю запросов,
накопленную браузером во время теста.
Синтаксис
public function back(): Crawler
Пример
Давайте создадим контроллер с двумя страницами и проверим возврат на предыдущую страницу:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/first', name: 'article_first')]
public function first(): Response
{
return new Response('first page');
}
#[Route('/second', name: 'article_second')]
public function second(): Response
{
return new Response('second page');
}
}
?>
Теперь напишем тест, который последовательно
открывает две страницы, а затем возвращается
на первую с помощью метода back:
<?php
namespace AppTestsController;
use SymfonyBundleFrameworkBundleTestWebTestCase;
class ArticleControllerTest extends WebTestCase
{
public function testBack(): void
{
$client = static::createClient();
$client->request('GET', '/first');
$client->request('GET', '/second');
$crawler = $client->back();
$this->assertStringContainsString('first page', $crawler->text());
}
}
?>
Результат выполнения теста:
"OK (1 test, 1 assertion)"
Пример
Давайте проверим, что после возврата назад доступен адрес предыдущей страницы:
<?php
namespace AppTestsController;
use SymfonyBundleFrameworkBundleTestWebTestCase;
class ArticleControllerTest extends WebTestCase
{
public function testBackUri(): void
{
$client = static::createClient();
$client->request('GET', '/first');
$client->request('GET', '/second');
$client->back();
$this->assertSame('/first', $client->getRequest()->getPathInfo());
}
}
?>
Результат выполнения теста:
"OK (1 test, 1 assertion)"
Смотрите также
-
класс
KernelBrowser,
который эмулирует браузер в тестах -
метод
request,
который выполняет HTTP-запрос -
метод
forward,
который выполняет переход вперёд по истории -
метод
reload,
который перезагружает текущую страницу