0
應該如何解決以下問題?我的功能在這裏被標記爲0%覆蓋率。尾隨大括號失敗,我的覆蓋率爲0%。
如果我加入其他return null
,那就失敗了(可以理解 - 因爲它不應該失敗)。如果我保留null並將它放在一行上,如下所示:
if($this->save()){ return true; } return null;
然後它通過。我新來測試,不確定我在這裏做錯了什麼?
應該如何解決以下問題?我的功能在這裏被標記爲0%覆蓋率。尾隨大括號失敗,我的覆蓋率爲0%。
如果我加入其他return null
,那就失敗了(可以理解 - 因爲它不應該失敗)。如果我保留null並將它放在一行上,如下所示:
if($this->save()){ return true; } return null;
然後它通過。我新來測試,不確定我在這裏做錯了什麼?
100%的代碼覆蓋率意味着你正在測試每個功能的每一個成果。您的return null
行被標記爲未覆蓋,因爲您的測試沒有分支到此行。
爲了將其標記爲已涵蓋,您需要進行測試,其中$this->save()
返回false
並測試您的方法返回null
。
在某些情況下,獲得100%的代碼覆蓋率是不可能的,或導致一些非常愚蠢/奇怪的外觀測試。在這些情況下,您可以簡單地忽略測試該特定行。
編輯:如果你重寫代碼,返回true
或false
,而不是true
和null
,你可以在你的方法改寫爲這樣的:
$expression = new Expression('SYSDATE');
$this->last_login = $expression;
return $this->save();
此代碼應該有100%的代碼覆蓋率。
也許'返回null;'從未達到!? – JustOnUnderMillions
如果您返回false而不是null,該怎麼辦? if($ this-> save()){return true; }返回false; –
不能說,我發現這個'覆蓋功能是由Xdebug擴展提供的,所以它不是PHPUnit本身,它從xdebug獲得信息。無論我真的不能幫助sry。 – JustOnUnderMillions