Nelmio\Alice\Generator\Resolver\Value\Chainable\UnresolvedFixtureReferenceIdResolver::withObjectGenerator PHP Method

withObjectGenerator() public method

public withObjectGenerator ( Nelmio\Alice\Generator\ObjectGeneratorInterface $generator ) : self
$generator Nelmio\Alice\Generator\ObjectGeneratorInterface
return self
    public function withObjectGenerator(ObjectGeneratorInterface $generator) : self
    {
        $decoratedResolver = $this->decoratedResolver instanceof ObjectGeneratorAwareInterface ? $this->decoratedResolver->withObjectGenerator($generator) : $this->decoratedResolver;
        return new self($decoratedResolver, $this->resolver);
    }

Usage Example

 public function testPassesTheObjectGeneratorAwarenessPropertyToItsDecoratedResolver()
 {
     $generator = new FakeObjectGenerator();
     $resolver = new UnresolvedFixtureReferenceIdResolver(new FakeChainableValueResolver());
     $newResolver = $resolver->withObjectGenerator($generator);
     $this->assertEquals($newResolver, $resolver);
     $this->assertNotSame($newResolver, $resolver);
     $resolver = new UnresolvedFixtureReferenceIdResolver(new FakeChainableValueResolver(), new FakeValueResolver());
     $newResolver = $resolver->withObjectGenerator($generator);
     $this->assertEquals($newResolver, $resolver);
     $this->assertNotSame($newResolver, $resolver);
     $decoratedResolverProphecy = $this->prophesize(ChainableValueResolverInterface::class);
     $decoratedResolverProphecy->willImplement(ObjectGeneratorAwareInterface::class);
     $decoratedResolverProphecy->withObjectGenerator($generator)->willReturn($newDecoratedResolver = new FakeChainableValueResolver());
     /** @var ChainableValueResolverInterface $decoratedResolver */
     $decoratedResolver = $decoratedResolverProphecy->reveal();
     $resolver = new UnresolvedFixtureReferenceIdResolver($decoratedResolver);
     $newResolver = $resolver->withObjectGenerator($generator);
     $this->assertEquals(new UnresolvedFixtureReferenceIdResolver($decoratedResolver), $resolver);
     $this->assertEquals(new UnresolvedFixtureReferenceIdResolver($newDecoratedResolver), $newResolver);
     $resolver = new UnresolvedFixtureReferenceIdResolver($decoratedResolver, new FakeValueResolver());
     $newResolver = $resolver->withObjectGenerator($generator);
     $this->assertEquals(new UnresolvedFixtureReferenceIdResolver($decoratedResolver, new FakeValueResolver()), $resolver);
     $this->assertEquals(new UnresolvedFixtureReferenceIdResolver($newDecoratedResolver, new FakeValueResolver()), $newResolver);
     $decoratedResolverProphecy->withObjectGenerator(Argument::any())->shouldHaveBeenCalledTimes(2);
 }