Я хочу писать функциональные тесты в symfony, но не могу переопределить метод createKernel WebTestCase. Наше приложение интегрировало symfony с помощью HttpKernel следующим образом:
$kernel = new HttpKernel($dispatcher, $controllerResolver, new
RequestStack(), $argumentResolver);
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
Я попытался вернуть это ядро из перезаписанного метода createKernel, но у него нет некоторых методов (например, getContainer()), которые позже выдают ошибку. Как я могу создать собственное ядро для WebTestCase?
Если я запускаю свой файл тестового примера с помощью ./vendor/bin/phpunit, я получаю сообщение об ошибке «Невозможно угадать каталог ядра». В документации Symfony указано, что «класс WebTestCase должен знать, какое ядро приложения используется для его начальной загрузки». Поскольку единственное ядро, которое у меня есть во всем моем приложении, - это HttpKernel, я не уверен, что еще я могу сделать, кроме написания собственного нового ядра. Здесь мне нужна помощь в написании собственного ядра.
Ваше ядро расширяет Symfony\Component\HttpKernel\Kernel?
Нет. Я использую пространство имен Symfony \ Component \ HttpKernel \ HttpKernel, указанное выше в моем файле.
вы можете установить переменную env KERNEL_DIR, а затем WebTestCase найдет ваш класс ядра
@DenisAlimov где мне установить KERNEL_DIR? И какой должна быть его стоимость?






пожалуйста, смотрите документацию тестирование (документы Symfony)
To run your functional tests, the WebTestCase class needs to know which is the application kernel to bootstrap it. The kernel class is usually defined in the KERNEL_CLASS environment variable (included in the default phpunit.xml.dist file provided by Symfony):
<?xml version = "1.0" charset = "utf-8" ?>
<phpunit>
<php>
<!-- the value is the FQCN of the application kernel -->
<env name = "KERNEL_CLASS" value = "App\Kernel" />
</php>
<!-- ... -->
</phpunit>
Кроме того, у вас есть запускаемый phpunit в каталоге bin и файл phpunit.xml.dist в каталоге приложения. обычно вы можете запускать тесты с помощью bin/phpunit -c app path_to_the_tests
В моем проекте нет файла phpuniti.xml.dist. Мой проект переносится на symfony, он не был написан с нуля в symfony (следовательно, не присутствует по умолчанию). Также у меня нет папки с приложениями.
создайте phpunit.xml в какой-нибудь папке. и вызовите phpunit с -c thatfolder
Я не совсем уверен, чего вы здесь пытаетесь достичь, но если вы расширите
WebTestCase, у вас будет доступ кstatic::bootKernel(), который загрузит ваше ядро, и у вас будет доступ к контейнеру сgetContainer.