function it_creates_listener_when_adding_resolver_with_unmet_dependencies(DependencyResolver $resolver, $dispatcher)
 {
     $resolver->getDependencies()->willReturn(['Car:kitt']);
     $resolver->isResolved()->willReturn(false);
     $dispatcher->addListener(Argument::type('string'), Argument::type('callable'))->shouldBeCalled();
     $this->addResolver($resolver);
     $this->getResolvers()->shouldBe([$resolver]);
 }
Example #2
0
 /**
  * @param DependencyResolver $resolver
  */
 public function addResolver(DependencyResolver $resolver)
 {
     $dependencies = $resolver->getDependencies();
     foreach ($dependencies as $reference) {
         if (array_key_exists($reference, $this->cache)) {
             $resolver->resolve($reference, $this->cache[$reference]);
         } else {
             // Set up an event listener to notify the resolver when the dependency is provided
             $this->dispatcher->addListener(sprintf(FixtureEvents::RESOLVE_DEPENDENCY_PATTERN, $reference), array($resolver, 'handle'));
         }
     }
     // Only store resolvers that have outstanding dependencies so we can check if everything
     // was resolved at a later date
     if (!$resolver->isResolved()) {
         $this->resolvers[] = $resolver;
     }
 }