function it_calls_the_operation_runner_if_found(RunnerRepository $runnerRepository, \ReflectionMethod $method, MethodInvocation $invocation, OperationRunner $operationRunner) { $invocation->reflection = $method; $runnerRepository->getRunnerByMethod($method)->willReturn($operationRunner); $operationRunner->run(Argument::any())->shouldBeCalled(); $this->intercept($invocation); }
/** * {@inheritdoc} */ public function intercept(MethodInvocation $invocation) { $operation = new Callback(function () use($invocation) { return $invocation->proceed(); }); if (null === ($runner = $this->runnerRepository->getRunnerByMethod($invocation->reflection))) { return $operation->call(); } return $runner->run($operation); }
/** * {@inheritdoc} */ public function matchesMethod(\ReflectionMethod $method) { return $this->runnerRepository->getRunnerByMethod($method) !== null; }
function it_do_not_matches_the_methods_that_do_not_have_a_runner(RunnerRepository $runnerRepository, \ReflectionMethod $method) { $runnerRepository->getRunnerByMethod($method)->willReturn(null); $this->matchesMethod($method)->shouldBe(false); }