getAppInstance(); /** @var Container $container */ $container = $app->getContainer(); $user = new User(1, 'bill.gates', 'Bill', 'Gates'); $userRepository = $this->makeEmpty(UserRepository::class, [ 'findUserOfId' => Expected::once($user) ]); $container->set(UserRepository::class, $userRepository); $request = $this->createRequest('GET', '/users/1'); $response = $app->handle($request); $payload = (string) $response->getBody(); $expectedPayload = new ActionPayload(200, $user); $serializedPayload = json_encode($expectedPayload, JSON_PRETTY_PRINT); $this->assertEquals($serializedPayload, $payload); } /** * @throws Exception */ public function testActionThrowsUserNotFoundException() { $app = $this->getAppInstance(); $callableResolver = $app->getCallableResolver(); $responseFactory = $app->getResponseFactory(); $errorHandler = new HttpErrorHandler($callableResolver, $responseFactory); $errorMiddleware = new ErrorMiddleware($callableResolver, $responseFactory, true, false, false); $errorMiddleware->setDefaultErrorHandler($errorHandler); $app->add($errorMiddleware); /** @var Container $container */ $container = $app->getContainer(); $userRepository = $this->makeEmpty(UserRepository::class, [ 'findUserOfId' => Expected::once(function() {throw new UserNotFoundException();}) ]); $container->set(UserRepository::class, $userRepository); $request = $this->createRequest('GET', '/users/1'); $response = $app->handle($request); $payload = (string) $response->getBody(); $expectedError = new ActionError(ActionError::RESOURCE_NOT_FOUND, 'The user you requested does not exist.'); $expectedPayload = new ActionPayload(404, null, $expectedError); $serializedPayload = json_encode($expectedPayload, JSON_PRETTY_PRINT); $this->assertEquals($serializedPayload, $payload); } }