function it_explicitly_sets_a_command_handler(Command $cmd, Container $container, FooHandler $handler) { $handlerClass = 'SomeHandler'; $this->setHandler(get_class($cmd->getWrappedObject()), $handlerClass); $container->resolve($handlerClass)->willReturn($handler)->shouldBeCalled(); $handler->handle($cmd)->shouldBeCalled(); $this->execute($cmd); }
private function getHandler(Command $command) { $handler = $this->resolveHandlerClass(get_class($command)); if (is_string($handler)) { $handler = $this->container->resolve($handler); } elseif ($handler instanceof \Closure) { $handler = $handler(); } if (!$handler instanceof Handler) { throw new UnexpectedValueException(sprintf("[%s] should be an instance of %s", get_class($handler), 'StudioIgnis\\Cmd\\Handler')); } return $handler; }