Nelmio\Alice\Generator\Resolver\Parameter\Chainable\RecursiveParameterResolverTest::testResolveWithChange PHP Method

testResolveWithChange() public method

    public function testResolveWithChange()
    {
        $parameter = new Parameter('foo', null);
        $unresolvedParameters = new ParameterBag(['name' => 'Alice']);
        $resolvedParameters = new ParameterBag(['place' => 'Wonderlands']);
        $context = new ResolvingContext('foo');
        $decoratedResolverProphecy = $this->prophesize(ChainableParameterResolverInterface::class);
        $decoratedResolverProphecy->resolve($parameter, $unresolvedParameters, $resolvedParameters, $context)->willReturn(new ParameterBag(['foo' => 'result1']));
        $decoratedResolverProphecy->resolve(new Parameter('foo', 'result1'), $unresolvedParameters, $resolvedParameters, $context)->willReturn(new ParameterBag(['foo' => 'result2']));
        $decoratedResolverProphecy->resolve(new Parameter('foo', 'result2'), $unresolvedParameters, $resolvedParameters, $context)->willReturn(new ParameterBag(['foo' => 'result3']));
        $decoratedResolverProphecy->resolve(new Parameter('foo', 'result3'), $unresolvedParameters, $resolvedParameters, $context)->willReturn($expected = new ParameterBag(['foo' => 'result3']));
        /* @var ChainableParameterResolverInterface $decoratedResolver */
        $decoratedResolver = $decoratedResolverProphecy->reveal();
        $resolver = new RecursiveParameterResolver($decoratedResolver);
        $actual = $resolver->resolve($parameter, $unresolvedParameters, $resolvedParameters, $context);
        $this->assertEquals($expected, $actual);
        $decoratedResolverProphecy->resolve(Argument::cetera())->shouldHaveBeenCalledTimes(4);
    }