PHPUnit单支架线未覆盖
谁能告诉我为什么这一行在最后一次休息之后;保持未覆盖状态,因此该方法的覆盖率为0%PHPUnit单支架线未覆盖,phpunit,Phpunit,谁能告诉我为什么这一行在最后一次休息之后;保持未覆盖状态,因此该方法的覆盖率为0% private function isADateParameter($fieldName, $fieldValue){ if(!is_array($fieldValue)){ $this->addPayloadError('filter',320, $fieldName. 'is a date field and needs an array filter like {"gt":"2
private function isADateParameter($fieldName, $fieldValue){
if(!is_array($fieldValue)){
$this->addPayloadError('filter',320, $fieldName. 'is a date field and needs an array filter like {"gt":"2015-05-01"}');
return false;
}
foreach ($fieldValue as $criteria => $date){
$ar_date = explode('-', $date);
switch(false){
case in_array($criteria, ['gt', 'lt', 'gte', 'lte']):
$this->addPayloadError('filter',321, $fieldName. ' supports only constraints gt, lt, gte or lte');
break;
case preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/",$date):
$this->addPayloadError('filter',322, $fieldName. ' supports only date in format YYYY-MM-DD');
break;
case checkdate($ar_date[1], $ar_date[2], $ar_date[0]):
$this->addPayloadError('filter',323, $date. ' is not a real date');
break;
} //uncovered red line in html report
}
if(isset($this->payloadErrors['filter']) && count($this->payloadErrors['filter']) > 0){
return false;
}
return true;
}
具体见结束语:
这不是一个bug。理论上,$value可以不是1、2或3,在这种情况下,switch()不会因为其中一个值而离开。Xdebug无法对“doSomething()”返回的内容进行假设,也无法知道返回的内容是否超过1、2或3。每个函数和方法的最后一个}包含一个隐式的“returnnull;”——PHP将其视为可执行代码。因为有一个可能的代码路径,}没有命中,所以它被标记为“未执行”
在你的案例中,你有三个案例陈述,我想你已经为之编写了测试,但还有第三个隐含的路径,你可能要测试,也可能不测试——如果三个案例都不匹配怎么办
tl;dr:在交换机中添加一个
默认值
案例,并确保您的测试能够使用它。或者不要忽略覆盖线。Hmm但我无法添加默认情况,这在我的模块中没有意义。是的,我有执行每个给定案例的测试。如果没有一个案例匹配,那么我有最后一个“returntrue”,表示我没有错误。对于这种情况,我也有测试。我对每个回路线和交换机内的每个案例都进行了测试。此外,Xdebug不应该对可能发生的情况做出任何假设。代码正在执行,每隔一行摘录这一行标记为绿色。