Returns a new instance which will include the passed parameter. If a parameter with that key already exist, it
WILL NOT be overridden.
public with ( |
||
$parameter | ||
return | self |
public function testGenerateObjects() { $loadedParameters = new ParameterBag(['loaded' => true]); $injectedParameters = new ParameterBag(['injected' => true]); $fixture = new DummyFixture('dummy'); $fixtures = (new FixtureBag())->with($fixture); $objects = new ObjectBag(['std' => new \stdClass()]); $set = new FixtureSet($loadedParameters, $injectedParameters, $fixtures, $objects); $resolvedParameters = $injectedParameters->with(new Parameter('loaded', true)); $resolvedSet = new ResolvedFixtureSet($resolvedParameters, $fixtures, $objects); $resolverProphecy = $this->prophesize(FixtureSetResolverInterface::class); $resolverProphecy->resolve($set)->willReturn($resolvedSet); /** @var FixtureSetResolverInterface $resolver */ $resolver = $resolverProphecy->reveal(); $context = new GenerationContext(); $objectGeneratorProphecy = $this->prophesize(ObjectGeneratorInterface::class); $objectGeneratorProphecy->generate($fixture, $resolvedSet, $context)->willReturn($objectsAfterFirstPass = $objects->with(new SimpleObject('foo', StdClassFactory::create(['pass' => 'first'])))); $contextAfterFirstPass = clone $context; $contextAfterFirstPass->setToSecondPass(); $objectGeneratorProphecy->generate($fixture, new ResolvedFixtureSet($resolvedSet->getParameters(), $resolvedSet->getFixtures(), $objectsAfterFirstPass), $contextAfterFirstPass)->willReturn($objectsAfterFirstPass = $objects->with(new SimpleObject('foo', StdClassFactory::create(['pass' => 'second'])))); /** @var ObjectGeneratorInterface $objectGenerator */ $objectGenerator = $objectGeneratorProphecy->reveal(); $expected = new ObjectSet($resolvedParameters, $objects->with(new SimpleObject('foo', StdClassFactory::create(['pass' => 'second'])))); $generator = new DoublePassGenerator($resolver, $objectGenerator); $actual = $generator->generate($set); $this->assertEquals($expected, $actual); $resolverProphecy->resolve(Argument::any())->shouldHaveBeenCalledTimes(1); $objectGeneratorProphecy->generate(Argument::cetera())->shouldHaveBeenCalledTimes(2); }
/** * {@inheritdoc} * * @param bool|int|float $parameter */ public function resolve(Parameter $parameter, ParameterBag $unresolvedParameters, ParameterBag $resolvedParameters) : ParameterBag { return $resolvedParameters->with($parameter); }