getConfigFactoryStub(); $kernel = $this->prophesize(HttpKernelInterface::class); $request = Request::create('/test'); // \Drupal\Core\StackMiddleware\NegotiationMiddleware normally takes care // of this so we'll hard code it here. $request->setRequestFormat('bananas'); $e = new MethodNotAllowedHttpException(['POST', 'PUT'], 'test message'); $event = new GetResponseForExceptionEvent($kernel->reveal(), $request, 'GET', $e); $subscriber = new TestDefaultExceptionSubscriber($config_factory); $subscriber->setStringTranslation($this->getStringTranslationStub()); $subscriber->onException($event); $response = $event->getResponse(); $this->assertInstanceOf(Response::class, $response); $this->stringStartsWith('The website encountered an unexpected error. Please try again later.

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException: test message in ', $response->getContent()); $this->assertEquals(405, $response->getStatusCode()); $this->assertEquals('POST, PUT', $response->headers->get('Allow')); // Also check that that text/plain content type was added. $this->assertEquals('text/plain', $response->headers->get('Content-Type')); } } class TestDefaultExceptionSubscriber extends FinalExceptionSubscriber { protected function isErrorDisplayable($error) { return TRUE; } protected function simplifyFileInError($error) { return $error; } protected function isErrorLevelVerbose() { return TRUE; } }