expects(self::never())->method('response'); (new ReflectionProperty(ResponseRenderer::class, 'instance'))->setValue(null, $responseRendererMock); $request = self::createStub(ServerRequest::class); $responseStub = new Response(self::createStub(ResponseInterface::class)); $appMock = self::createMock(Application::class); $appMock->expects(self::once())->method('handle')->with($request)->willReturn($responseStub); $handler = new ApplicationHandler($appMock); $response = $handler->handle($request); self::assertSame($response, $responseStub); } #[BackupStaticProperties(true)] public function testHandleThrowsExit(): void { $responseStub = new Response(self::createStub(ResponseInterface::class)); $responseRendererMock = self::createMock(ResponseRenderer::class); $responseRendererMock->expects(self::once())->method('response')->willReturn($responseStub); (new ReflectionProperty(ResponseRenderer::class, 'instance'))->setValue(null, $responseRendererMock); $request = self::createStub(ServerRequest::class); $appMock = self::createMock(Application::class); $appMock->expects(self::once())->method('handle')->with($request)->willThrowException(new ExitException()); $handler = new ApplicationHandler($appMock); $response = $handler->handle($request); self::assertSame($response, $responseStub); } #[BackupStaticProperties(true)] public function testHandleReturnsNull(): void { $responseStub = new Response(self::createStub(ResponseInterface::class)); $responseRendererMock = self::createMock(ResponseRenderer::class); $responseRendererMock->expects(self::once())->method('response')->willReturn($responseStub); (new ReflectionProperty(ResponseRenderer::class, 'instance'))->setValue(null, $responseRendererMock); $request = self::createStub(ServerRequest::class); $appMock = self::createMock(Application::class); $appMock->expects(self::once())->method('handle')->with($request)->willReturn(null); $handler = new ApplicationHandler($appMock); $response = $handler->handle($request); self::assertSame($response, $responseStub); } }