Метод getContainer класса KernelTestCase
Метод getContainer класса KernelTestCase возвращает объект контейнера зависимостей ContainerInterface. Контейнер позволяет получить любой сервис, зарегистрированный в приложении, например репозиторий, почтовый клиент или валидатор. Перед вызовом метода необходимо загрузить ядро через bootKernel. Параметров метод не принимает.
Синтаксис
public function getContainer(): ContainerInterface
Пример
Давайте получим сервис validator из контейнера и проверим его наличие:
<?php
namespace App\Tests;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
use Symfony\Component\Validator\Validator\ValidatorInterface;
class ServiceTest extends KernelTestCase
{
public function testContainer(): void
{
self::bootKernel();
$container = static::getContainer();
$validator = $container->get(ValidatorInterface::class);
echo get_class($validator);
}
}
?>
Результат выполнения кода:
"Symfony\Component\Validator\Validator\TraceableValidator"
Пример
Давайте получим репозиторий сущности и посчитаем количество записей:
<?php
namespace App\Tests;
use App\Repository\ArticleRepository;
use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
class RepositoryTest extends KernelTestCase
{
public function testCount(): void
{
self::bootKernel();
$container = static::getContainer();
$repository = $container->get(ArticleRepository::class);
$count = $repository->count([]);
echo $count;
}
}
?>
Результат выполнения кода:
5
Смотрите также
-
класс
KernelTestCase,
который является базовым классом для тестов без HTTP-запросов -
метод
bootKernel,
который загружает ядро приложения перед тестом -
метод
createKernel,
который создаёт экземпляр ядра приложения -
класс
WebTestCase,
который расширяет KernelTestCase для тестирования HTTP-запросов