createMock(OpenApiRenderer::class); $openApiRenderer->method('getFormat')->willReturn($this->format); $openApiRenderer->expects($this->once())->method('render'); $this->renderOpenApi($openApiRenderer); } public function testUnknownFormat() { $availableOpenApiRenderers = []; $this->expectException(InvalidArgumentException::class); $this->expectErrorMessage(sprintf('Format "%s" is not supported.', $this->format)); $this->renderOpenApi(...$availableOpenApiRenderers); } public function testUnknownArea() { $this->hasArea = false; $this->expectException(InvalidArgumentException::class); $this->expectErrorMessage(sprintf('Area "%s" is not supported.', $this->area)); $this->renderOpenApi(); } public function testNullFormat() { $openApiRenderer = $this->createMock(OpenApiRenderer::class); $openApiRenderer->method('getFormat')->willReturn($this->format); $openApiRenderer->expects($this->once())->method('render'); $availableOpenApiRenderers = [ $openApiRenderer, null, ]; $this->renderOpenApi(...$availableOpenApiRenderers); } private function renderOpenApi(...$openApiRenderer): void { $spec = $this->createMock(OpenApi::class); $generator = new class($spec) { private $spec; public function __construct($spec) { $this->spec = $spec; } public function generate() { return $this->spec; } }; $generatorLocator = $this->createMock(ContainerInterface::class); $generatorLocator->method('has')->willReturn($this->hasArea); $generatorLocator->method('get')->willReturn($generator); $renderOpenApi = new RenderOpenApi($generatorLocator, ...$openApiRenderer); $renderOpenApi->render($this->format, $this->area, []); } }