Использование PHPUnit с PHP-DI

Я использую библиотеку PHP-DI, и она отлично работает с моим кодом с помощью файла начальной загрузки и конфигурации, как это рекомендовано документацией PHP-DI.

Затем в моем приложении я получаю контейнер и запускаю его, вызывая загрузчик:

$container = require __DIR__ . '/Container/bootstrap.php';
$main = $container->get( Main::class );

Итак, теперь я пытаюсь настроить модульное тестирование с помощью PHPUnit.

Я хотел бы получить $container в каждом тестовом классе, чтобы я мог внедрить все зависимости каждого теста, используя $container->injectOn($this) как предложено в документации PHP-DI.

Я наткнулся на этот открытый вопрос [который в основном находится над моей головой], но он все еще открыт и, похоже, не содержит никаких рекомендаций.

https://github.com/PHP-DI/PHP-DI/issues/125

Единственное, что я думаю, это то, что я мог бы просто вызвать начальную загрузку в setUp() так же, как и в моем основном приложении?

$container = require __DIR__ . '/Container/bootstrap.php';

Это то, что я должен делать? Есть ли более элегантный или рекомендуемый способ сделать это?

Спасибо!

Примечание: PHP-DI не является фреймворком. Это библиотека.
M. Eriksson 15.04.2019 20:09
Стоит ли изучать 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
1
950
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Да, загрузка контейнера в тесте — это нормально. Если ваш бутстрап делает слишком много вещей, которые могут усложниться, но в идеале ваш бутстрап не должен делать многого (просто настройте контейнер и создайте класс приложения).

Спасибо за отзыв - я не упомянул в своем первоначальном запросе, что это для плагина Wordpress, и я использую инструменты тестирования плагинов Wordpress, которые загружают WP, который загружает мой плагин, который загружает контейнер и т. д. Это проблема в том, что загрузчик WP загружает его, а также мой тестовый код? Редактировать: кажется, что тест работает нормально... Мне просто интересно, следует ли мне продолжать исследовать способ упрощения, чтобы контейнер загружался только один раз.

Kerry Randolph 15.04.2019 21:14

Честно говоря, я не уверен, но пока он работает и не слишком медленный, перезагрузка как можно чаще между тестами никогда не бывает плохой. По крайней мере, каждый тест изолирован от других.

Matthieu Napoli 16.04.2019 11:13

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