Я тестирую свое приложение 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 ()