public function testChecksIfParameterIsReferencedBeforeTryingToResolveIt()
{
$parameter = new Parameter('foo', '<{bar}>');
$unresolvedParameters = new ParameterBag();
$resolvedParameters = new ParameterBag();
$resolver = new StringParameterResolver();
try {
$resolver->resolve($parameter, $unresolvedParameters, $resolvedParameters);
$this->fail('Expected exception to be thrown');
} catch (ParameterNotFoundException $exception) {
$this->assertEquals('Could not find the parameter "bar" when resolving "foo".', $exception->getMessage());
}
$injectedResolverProphecy = $this->prophesize(ParameterResolverInterface::class);
$injectedResolverProphecy->resolve(Argument::cetera())->shouldNotBeCalled();
/* @var ParameterResolverInterface $injectedResolver */
$injectedResolver = $injectedResolverProphecy->reveal();
$resolver = (new StringParameterResolver())->withResolver($injectedResolver);
try {
$resolver->resolve($parameter, $unresolvedParameters, $resolvedParameters);
$this->fail('Expected exception to be thrown');
} catch (ParameterNotFoundException $exception) {
$this->assertEquals('Could not find the parameter "bar" when resolving "foo".', $exception->getMessage());
}
}