功能代码覆盖率不是100%

时间:2016-11-16 15:57:54

标签: php code-coverage codeception

enter image description here

如何解决以下问题?我的功能标记为0%覆盖率。尾随支架失败,我的覆盖率为0%。

如果我添加了else return null,那就失败了(可以理解 - 因为它不应该失败)。如果我保留null并将其全部放在一行上,如下所示:

if($this->save()){ return true; } return null;

然后它过去了。我是新手测试,不知道我在这里做错了什么?

enter image description here

1 个答案:

答案 0 :(得分:2)

100%的代码覆盖率意味着您正在测试每个功能的每个结果。您的return null行被标记为未涵盖,因为您的测试没有分支到此行。

为了将其标记为已覆盖,您需要进行$this->save()返回false的测试,并测试您的方法是否应该返回null

在某些情况下,获得100%的代码覆盖率是不可能的,或者会导致一些非常愚蠢/怪异的测试。在这些情况下,您可以忽略测试该特定行。

编辑:如果您重写代码以返回truefalse,而不是truenull,则可以将您的方法重写为:

$expression = new Expression('SYSDATE');
$this->last_login = $expression;
return $this->save();

此代码应具有100%的代码覆盖率。