asArray(); } /** * Creates mock of Response object for header testing * * @param mixed[]|string|StringContains ...$param parameter for header method */ public function mockResponse(array|string|StringContains ...$param): MockObject { $mockResponse = $this->getMockBuilder(ResponseRenderer::class) ->disableOriginalConstructor() ->onlyMethods([ 'header', 'headersSent', 'disable', 'isAjax', 'setRequestStatus', 'addJSON', 'addHTML', 'setMinimalFooter', 'getHeader', 'httpResponseCode', ]) ->getMock(); $mockResponse->expects($this->any()) ->method('headersSent') ->with() ->willReturn(false); if ($param !== []) { if (is_array($param[0])) { if (is_array($param[0][0]) && count($param) === 1) { $param = $param[0]; if (is_int(end($param))) { $httpResponseCodeParam = end($param); $param = array_slice($param, 0, -1); $mockResponse->expects($this->once()) ->method('httpResponseCode')->with($httpResponseCodeParam); } } } else { $mockResponse->expects($this->once()) ->method('header') ->with($param[0]); } } $attrInstance = new ReflectionProperty(ResponseRenderer::class, 'instance'); $attrInstance->setValue(null, $mockResponse); return $mockResponse; } /** * Tear down function for mockResponse method */ protected function tearDown(): void { parent::tearDown(); $response = new ReflectionProperty(ResponseRenderer::class, 'instance'); $response->setValue(null, null); } }