Поиск сервисов по тегу в тестах phpunit - PullRequest
0 голосов
/ 13 июня 2019

Я тестирую свое приложение Symfony и хочу получить доступ ко всем сервисам с помощью пользовательского тега, см. Мой services.yml:

_instanceof:
   App\ReportPlaceholderInterface:
      tags: ['app.reportplaceholder']

Эти теги работают до тех пор, пока я добавляю их в другие службы в качестве аргумента:

App\Service\ReportHelper:
    arguments: [!tagged app.reportplaceholder]

В моем тесте я хочу определить dataProvider:

class MyTest extends KernelTestCase{

    public function provider(){
        static::bootKernel();
        return static::$container->findTaggedServiceIds('app.reportplaceholder');

        /* this doesn't work as well, since the classes are in namespace App\ReportPlaceholder, and my tests live in namespace Tests */
        return array_map(function($p) { return [$p]; }, 
                array_filter(get_declared_classes(), function($className){
                     return in_array(ReportPlaceholderInterface::class, class_implements($className));}
        ));
    }

    /** @dataProvider provider */
    public function testPlaceholder($placeholderName){
        $placeholder = static::$container->get($placeholderName);
        ...
    }
}

Я получаю эту ошибку:

Вызов неопределенного метода Symfony \ Bundle \ FrameworkBundle \ Test \ TestContainer :: findTaggedServiceIds ()

...