function it_initializes(IHttpApp $httpApp, IErrorHandler $errorHandler, IContainer $container) { $httpApp->getDebug()->willReturn(true); $errorHandler->addErrorHandler(Argument::any())->shouldBeCalled(); $errorHandler->addExceptionHandler(Argument::any())->shouldBeCalled(); $container->set(JsonErrorHandler::class, Argument::type(JsonErrorHandler::class))->shouldBeCalled(); $this->initialize($httpApp, $errorHandler, $container); }
/** * @param Exception $ex */ public function handleException(Exception $ex) { $trace = $ex->getTrace(); foreach ($trace as &$item) { foreach (array_keys($item) as $key) { if (!array_contains(['file', 'line', 'function', 'class'], $key)) { array_remove($item, $key); } } } $response = new JsonResponse(HttpStatusCode::INTERNAL_SERVER_ERROR); $response->getData()->set('error.message', $ex->getMessage()); $response->getData()->set('error.code', $ex->getCode()); $response->getData()->set('error.file', $ex->getFile()); $response->getData()->set('error.line', $ex->getLine()); $response->getData()->set('error.trace', $trace); $this->httpApp->shutdownWithResponse($response); }
function it_handles_exception(IHttpApp $httpApp, Exception $ex) { $httpApp->shutdownWithResponse(Argument::type(JsonResponse::class))->shouldBeCalled(); $this->handleException($ex); }