模拟php函数



我为我的项目制作了一个symfony 4可重复使用的捆绑包。我想用接近100%的覆盖率来测试它。但我不知道如何测试我的代码中依赖php函数的部分。

示例:

public function getStatusCode(Exception $exception)
{
if ($exception instanceof HttpExceptionInterface) {
return $exception->getStatusCode();
}
if (is_a($exception, "SymfonyComponentSecurityCoreExceptionAccessDeniedException")) {
return Response::HTTP_UNAUTHORIZED; // I want to test this
}
return Response::HTTP_INTERNAL_SERVER_ERROR;
}

我尝试使用getMockBuilder,但mock的类不正确。

有没有一种方法可以模拟或替换Is_a,或者创建一个类与condition中的类相同的模拟?

如果你真的想模拟这个函数,你可以使用这个包:https://packagist.org/packages/hjerichen/prophecy-php

这是PHPUnit测试用例中测试方法的一个简单示例。

$php = $this->prophesizePHP(__NAMESPACE__);
$php->is_a($exception, "SymfonyComponentSecurityCoreExceptionAccessDeniedException")->willReturn(true);
$php->reveal()

最新更新