readFileCalled = false; $this->readFile = function (string $fileName): string { $this->readFileCalled = true; return $fileName; }; $this->handler = new NotFoundTemplateHandler($this->readFile); } /** * @test * @dataProvider provideTemplates */ public function properErrorTemplateIsRendered(ServerRequestInterface $request, string $expectedTemplate): void { $resp = $this->handler->handle($request->withHeader('Accept', 'text/html')); self::assertInstanceOf(Response\HtmlResponse::class, $resp); self::assertStringContainsString($expectedTemplate, (string) $resp->getBody()); self::assertTrue($this->readFileCalled); } public function provideTemplates(): iterable { $request = ServerRequestFactory::fromGlobals(); yield [$request, NotFoundTemplateHandler::NOT_FOUND_TEMPLATE]; yield [ $request->withAttribute( RouteResult::class, RouteResult::fromRoute(new Route('', $this->prophesize(MiddlewareInterface::class)->reveal())), ), NotFoundTemplateHandler::INVALID_SHORT_CODE_TEMPLATE, ]; } }