Метод bootKernel
Метод bootKernel принадлежит классу KernelTestCase
и запускает ядро приложения. Он возвращает экземпляр
ядра KernelInterface, с которым дальше работает
тест: получает контейнер зависимостей, достаёт сервисы
и проверяет их поведение. Первым параметром можно
передать массив опций, например environment
для выбора окружения и debug для режима отладки.
Синтаксис
protected static function bootKernel(array $options = []): KernelInterface
Пример
Давайте запустим ядро в тестовом окружении и получим сервис из контейнера:
<?php
namespace App\Tests\Service;
use App\Service\ArticleService;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
class ArticleServiceTest extends KernelTestCase
{
public function testService(): void
{
$kernel = self::bootKernel();
$container = static::getContainer();
$service = $container->get(ArticleService::class);
$this->assertInstanceOf(ArticleService::class, $service);
$this->assertSame('test', $kernel->getEnvironment());
}
}
?>
Результат выполнения кода:
"OK (1 test, 2 assertions)"
Пример
Давайте передадим опции и запустим ядро в окружении
'prod' без отладки:
<?php
namespace App\Tests\Kernel;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
class EnvironmentTest extends KernelTestCase
{
public function testEnvironment(): void
{
$kernel = self::bootKernel([
'environment' => 'prod',
'debug' => false,
]);
$this->assertSame('prod', $kernel->getEnvironment());
$this->assertFalse($kernel->isDebug());
}
}
?>
Результат выполнения кода:
"OK (1 test, 2 assertions)"
Пример
Давайте проверим работу сервиса, который возвращает список статей:
<?php
namespace App\Tests\Service;
use App\Service\ArticleService;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
class ArticleListTest extends KernelTestCase
{
public function testList(): void
{
self::bootKernel();
$container = static::getContainer();
$service = $container->get(ArticleService::class);
$res = $service->getList();
$this->assertSame(['article', 'user', 'hello'], $res);
}
}
?>
Результат выполнения кода:
"OK (1 test, 1 assertion)"
Смотрите также
-
класс
KernelTestCase,
который является базовым для интеграционных тестов -
метод
getContainer,
который возвращает контейнер зависимостей -
метод
createKernel,
который создаёт экземпляр ядра приложения -
класс
WebTestCase,
который расширяет KernelTestCase для HTTP-тестов