函数代码覆盖率不是100%
Function Code coverage not 100%
以下问题应该如何解决?我这里的函数被标记为 0% 覆盖率。尾随括号失败,我的覆盖率为 0%。
如果我在 else return null
中添加,那将失败(可以理解 - 因为它不应该失败)。如果我保留 null 并将其全部放在一行中,如下所示:
if($this->save()){ return true; } return null;
然后就过去了。我是测试新手,不确定我做错了什么?
100% 的代码覆盖率意味着您正在测试每个函数的每个结果。您的 return null
行被标记为未涵盖,因为您的测试没有分支到该行。
为了将其标记为已覆盖,您需要在 $this->save()
returns false
处进行测试并测试您的方法 returns null
就像它应该的那样。
在某些情况下,获得 100% 的代码覆盖率是不可能的,或者导致一些看起来非常 stupid/weird 的测试。在这些情况下,您可以简单地忽略对该特定行的测试。
编辑:如果您将代码重写为 return true
或 false
,而不是 true
和 null
,您可以将您的方法重写为这个:
$expression = new Expression('SYSDATE');
$this->last_login = $expression;
return $this->save();
此代码应具有 100% 的代码覆盖率。
以下问题应该如何解决?我这里的函数被标记为 0% 覆盖率。尾随括号失败,我的覆盖率为 0%。
如果我在 else return null
中添加,那将失败(可以理解 - 因为它不应该失败)。如果我保留 null 并将其全部放在一行中,如下所示:
if($this->save()){ return true; } return null;
然后就过去了。我是测试新手,不确定我做错了什么?
100% 的代码覆盖率意味着您正在测试每个函数的每个结果。您的 return null
行被标记为未涵盖,因为您的测试没有分支到该行。
为了将其标记为已覆盖,您需要在 $this->save()
returns false
处进行测试并测试您的方法 returns null
就像它应该的那样。
在某些情况下,获得 100% 的代码覆盖率是不可能的,或者导致一些看起来非常 stupid/weird 的测试。在这些情况下,您可以简单地忽略对该特定行的测试。
编辑:如果您将代码重写为 return true
或 false
,而不是 true
和 null
,您可以将您的方法重写为这个:
$expression = new Expression('SYSDATE');
$this->last_login = $expression;
return $this->save();
此代码应具有 100% 的代码覆盖率。