2016-11-16 65 views
0

enter image description here功能代碼覆蓋率不是100%

應該如何解決以下問題?我的功能在這裏被標記爲0%覆蓋率。尾隨大括號失敗,我的覆蓋率爲0%。

如果我加入其他return null,那就失敗了(可以理解 - 因爲它不應該失敗)。如果我保留null並將它放在一行上,如下所示:

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

然後它通過。我新來測試,不確定我在這裏做錯了什麼?

enter image description here

+0

也許'返回null;'從未達到!? – JustOnUnderMillions

+0

如果您返回false而不是null,該怎麼辦? if($ this-> save()){return true; }返回false; –

+0

不能說,我發現這個'覆蓋功能是由Xdebug擴展提供的,所以它不是PHPUnit本身,它從xdebug獲得信息。無論我真的不能幫助sry。 – JustOnUnderMillions

回答

2

100%的代碼覆蓋率意味着你正在測試每個功能的每一個成果。您的return null行被標記爲未覆蓋,因爲您的測試沒有分支到此行。

爲了將其標記爲已涵蓋,您需要進行測試,其中$this->save()返回false並測試您的方法返回null

在某些情況下,獲得100%的代碼覆蓋率是不可能的,或導致一些非常愚蠢/奇怪的外觀測試。在這些情況下,您可以簡單地忽略測試該特定行。

編輯:如果你重寫代碼,返回truefalse,而不是truenull,你可以在你的方法改寫爲這樣的:

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

此代碼應該有100%的代碼覆蓋率。