Как расширить WebTestCase в Symfony

Я хочу писать функциональные тесты в 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?

Я не совсем уверен, чего вы здесь пытаетесь достичь, но если вы расширите WebTestCase, у вас будет доступ к static::bootKernel(), который загрузит ваше ядро, и у вас будет доступ к контейнеру с getContainer.

Domagoj 27.08.2018 12:28

Если я запускаю свой файл тестового примера с помощью ./vendor/bin/phpunit, я получаю сообщение об ошибке «Невозможно угадать каталог ядра». В документации Symfony указано, что «класс WebTestCase должен знать, какое ядро ​​приложения используется для его начальной загрузки». Поскольку единственное ядро, которое у меня есть во всем моем приложении, - это HttpKernel, я не уверен, что еще я могу сделать, кроме написания собственного нового ядра. Здесь мне нужна помощь в написании собственного ядра.

LoneCuriousWolf 27.08.2018 12:32

Ваше ядро ​​расширяет Symfony\Component\HttpKernel\Kernel?

Domagoj 27.08.2018 12:33

Нет. Я использую пространство имен Symfony \ Component \ HttpKernel \ HttpKernel, указанное выше в моем файле.

LoneCuriousWolf 27.08.2018 12:43

вы можете установить переменную env KERNEL_DIR, а затем WebTestCase найдет ваш класс ядра

Denis Alimov 27.08.2018 12:43

@DenisAlimov где мне установить KERNEL_DIR? И какой должна быть его стоимость?

LoneCuriousWolf 27.08.2018 12:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
759
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

пожалуйста, смотрите документацию тестирование (документы 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 (следовательно, не присутствует по умолчанию). Также у меня нет папки с приложениями.

LoneCuriousWolf 27.08.2018 12:51

создайте phpunit.xml в какой-нибудь папке. и вызовите phpunit с -c thatfolder

Denis Alimov 27.08.2018 15:02

Другие вопросы по теме