public resolve ( |
||
$parameter | ||
$unresolvedParameters | ||
$resolvedParameters | ||
$context | ||
$previousResult | ||
$counter | integer | |
Результат |
public function testThrowsAnExceptionWhenRecursionLimitIsReached() { $parameter = new Parameter('foo', null); $unresolvedParameters = new ParameterBag(); $resolvedParameters = new ParameterBag(); $context = new ResolvingContext('foo'); $decoratedResolverProphecy = $this->prophesize(ChainableParameterResolverInterface::class); $decoratedResolverProphecy->resolve(Argument::cetera())->will(function ($args) { $hash = spl_object_hash($args[0]); return new ParameterBag(['foo' => uniqid($hash)]); }); /* @var ChainableParameterResolverInterface $decoratedResolver */ $decoratedResolver = $decoratedResolverProphecy->reveal(); $resolver = new RecursiveParameterResolver($decoratedResolver); try { $resolver->resolve($parameter, $unresolvedParameters, $resolvedParameters, $context); $this->fail('Expected exception to be thrown.'); } catch (RecursionLimitReachedException $exception) { $this->assertEquals('Recursion limit (5 tries) reached while resolving the parameter "foo"', $exception->getMessage()); $decoratedResolverProphecy->resolve(Argument::cetera())->shouldHaveBeenCalledTimes(5); } $resolver = new RecursiveParameterResolver($decoratedResolver, 10); try { $resolver->resolve($parameter, $unresolvedParameters, $resolvedParameters, $context); $this->fail('Expected exception to be thrown.'); } catch (RecursionLimitReachedException $exception) { $this->assertEquals('Recursion limit (10 tries) reached while resolving the parameter "foo"', $exception->getMessage()); $decoratedResolverProphecy->resolve(Argument::cetera())->shouldHaveBeenCalledTimes(15); } }