我为我的项目制作了一个symfony 4可重用的包。 我想以100%附近的覆盖率对其进行测试。 但是我不知道如何测试依赖于php函数的部分代码。
示例:
public function getStatusCode(\Exception $exception)
{
if ($exception instanceof HttpExceptionInterface) {
return $exception->getStatusCode();
}
if (is_a($exception, "Symfony\Component\Security\Core\Exception\AccessDeniedException")) {
return Response::HTTP_UNAUTHORIZED; // I want to test this
}
return Response::HTTP_INTERNAL_SERVER_ERROR;
}
我尝试使用getMockBuilder,但是模拟的类不正确。
是否可以模拟或替换is_a或创建其类与条件相同的模拟?
答案 0 :(得分:0)
如果你真的想模拟这个函数,你可以使用这个包:https://packagist.org/packages/hjerichen/prophecy-php
这是 PHPUnit TestCase 中测试方法的简单示例。
$php = $this->prophesizePHP(__NAMESPACE__);
$php->is_a($exception, "Symfony\Component\Security\Core\Exception\AccessDeniedException")->willReturn(true);
$php->reveal()