【发布时间】:2017-05-31 01:26:19
【问题描述】:
我无法让 PHPUnit 的代码覆盖工具将这个 else 语句标记为已覆盖,即使它必须被覆盖,或者无法覆盖以下行。在同一类的其他地方,仅包含 } else { 的另一行被正确标记为已覆盖。
if (is_string($externalId) && $externalId != '') {
$sitesIds[] = $externalId;
} else if ($regionName != null && $regionName != '') {
$sitesIds = $this->sitesService->getSites($regionName);
if (!is_array($sitesIds) || count($sitesIds) == 0) {
throw new \Exception(self::NO_MATCHING_REGION, '404');
}
} else {
throw new \Exception(self::BAD_REQUEST.'. Should specify station or region', '400');
}
【问题讨论】:
-
我知道在测试中让一行变成绿色并不能改进代码,但我的强迫症迫使我尽可能地覆盖最后一行:-)
-
是否移动
else {以分隔行更改内容? -
@Furgas No. } 标记为未覆盖,而
else {为白色,表示不打算覆盖/测试
标签: php phpunit code-coverage