Аннотации сервисов модульного тестирования без Symfony

У меня есть несколько бандлов, которые еще не установлены в Symfony.

В этих пакетах есть файл services.yml:

mybundle/src/Bundle/Resources/config/services.yml

services.yml содержит классы и аргументы из пакета, которые позже используются Symfony, но не самим пакетом:

mybundle.data.download.get:
  class: mybundle\data\download\getinfo\get
  arguments:
  - "@bundle.myDepdendency.generate"
  - "@bundle.myDepdendency.dosomething"
  - "@bundle.helloThere"

У меня есть рабочие модульные тесты в Symfony для services.yml, которые проверяют, что все классы загружены правильно, однако, поскольку я разрабатываю пакеты независимо от Symfony, я хотел бы иметь тест, чтобы узнать, содержит ли services.yml все классы и их аргументы.

Итак, вопрос:

Есть ли способ проверить, содержит ли services.yml заданные классы и их аргументы, не используя Symfony?

Стоит ли изучать 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
0
40
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Я бы начал с этого фрагмента:

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;

$containerBuilder = new ContainerBuilder();
$loader = new YamlFileLoader($containerBuilder, new FileLocator(__DIR__.'/../BundlePath/Resources/config'));
$loader->load('services.yml');
$containerBuilder->compile();

Конечно, вам нужны компоненты symfony/dependency-injection и symfony/config от symfony. Но здесь вы должны проверить, будет ли выбрано какое-либо исключение. Если нет, то каждый сервис найден и может быть подключен.

С участием

$containerBuilder->get('service_id') instanceof Bundle\Service\SomeService

вы даже можете проверить, действительно ли был загружен класс обслуживания.

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