如何解决以下问题?我的功能标记为0%覆盖率。尾随支架失败,我的覆盖率为0%。
如果我添加了else return null
,那就失败了(可以理解 - 因为它不应该失败)。如果我保留null并将其全部放在一行上,如下所示:
if($this->save()){ return true; } return null;
然后它过去了。我是新手测试,不知道我在这里做错了什么?
答案 0 :(得分:2)
100%的代码覆盖率意味着您正在测试每个功能的每个结果。您的return null
行被标记为未涵盖,因为您的测试没有分支到此行。
为了将其标记为已覆盖,您需要进行$this->save()
返回false
的测试,并测试您的方法是否应该返回null
。
在某些情况下,获得100%的代码覆盖率是不可能的,或者会导致一些非常愚蠢/怪异的测试。在这些情况下,您可以忽略测试该特定行。
编辑:如果您重写代码以返回true
或false
,而不是true
和null
,则可以将您的方法重写为:
$expression = new Expression('SYSDATE');
$this->last_login = $expression;
return $this->save();
此代码应具有100%的代码覆盖率。