【发布时间】:2018-07-19 07:41:35
【问题描述】:
我为我的项目制作了一个 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 或创建一个类与条件相同的模拟?
【问题讨论】:
-
为什么不能使用
instanceof而不是is_a? -
为什么需要模拟?你想模拟哪个方法调用?传递
AccessDeniedException似乎是测试此方法是否正确返回状态代码的最简单方法。 -
我想使用 is_a 因为我希望该方法在没有安全包的情况下工作也许解决方案只是在项目开发需要中添加安全包
标签: php unit-testing mocking phpunit symfony4