被験者の一部:
class AddOptionsProviderArgumentPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
if(!$container->hasDefinition('gremo_highcharts')) {
return;
}
if(!$container->hasParameter('gremo_highcharts.options_provider')) {
return;
}
// ...
}
}
私はそれを主張したい:
hasDefinition()
パラメータ「gremo_highcharts」を指定して呼び出すと返されますfalse
- メソッド
process()
が戻ります。つまり、他のメソッドは呼び出されません
1 つの解決策は、次の への呼び出しについてアサートすることhasParameter()
です。
public function testProcessWillReturnIfThereIsNoServiceDefinition()
{
$container = $this->getMockedContainerBuilder();
$pass = new AddOptionsProviderArgumentPass();
$container->expects($this->once())
->method('hasDefinition')
->with($this->equalTo('gremo_highcharts'))
->will($this->returnValue(false));
// Expects that hasParameter() is never invoked
$container->expects($this->never())
->method('hasParameter');
$pass->process($container);
}
しかし、それはエレガントなソリューションではないようです。