public function testWhenResolvingDynamicStringLookForResolvedParametersFirst()
{
$parameter = new Parameter('foo', '<{bar}>');
$unresolvedParameters = new ParameterBag();
$resolvedParameters = new ParameterBag(['bar' => 'Mad Hatter']);
$expected = new ParameterBag(['bar' => 'Mad Hatter', 'foo' => 'Mad Hatter']);
$resolver = new StringParameterResolver();
$result = $resolver->resolve($parameter, $unresolvedParameters, $resolvedParameters);
$this->assertEquals($expected, $result);
$injectedResolverProphecy = $this->prophesize(ParameterResolverInterface::class);
$injectedResolverProphecy->resolve(Argument::cetera())->shouldNotBeCalled();
/* @var ParameterResolverInterface $injectedResolver */
$injectedResolver = $injectedResolverProphecy->reveal();
$resolver = (new StringParameterResolver())->withResolver($injectedResolver);
$result = $resolver->resolve($parameter, $unresolvedParameters, $resolvedParameters);
$this->assertEquals($expected, $result);
}