function it_does_not_store_resolvers_that_can_be_resolved_from_cache(DependencyResolver $resolver, $dispatcher)
 {
     $car = new Car();
     $this->set('kitt', $car);
     $resolver->resolve('Car:kitt', $car)->shouldBeCalled();
     $resolver->getDependencies()->willReturn(['Car:kitt']);
     $resolver->isResolved()->willReturn(true);
     $dispatcher->addListener(Argument::cetera())->shouldNotBeCalled();
     $this->addResolver($resolver);
     $this->getResolvers()->shouldBe([]);
 }
示例#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;
     }
 }