[英]PHPUnit and Guard Clause, not 100% coverage
我有這個衛隊:
protected function validateRemove($key)
{
if (!isset($this->collection[$key])) {
throw new CategoryCollectionBadItemException();
}
}
和測試:
/**
* @test
* @expectedException InfluenceDecision\Domain\Exception\Category\CategoryCollectionBadItemException
*/
public function removeMethodMustThrowExceptionWithInvalidKey()
{
$this->categoryCollection->add(
new Category(
null,
'test category'
)
);
$this->categoryCollection->remove(1);
}
CategoryCollection刪除方法調用validateRemove方法
該測試工作正常,但是覆蓋率不是100%,因為該測試無法訪問validateRemove方法的最后一行:
什么是合適的解決方案?
發生這種情況是因為您沒有同時測試函數的兩個分支,在測試用例中,當您引發異常時函數會中斷,因此從技術上講還沒有完成。 您已經測試了half
的功能,即使它只是其中的唯一邏輯。
如果你想100%的覆蓋率,則需要建立在那里進行測試$this->collection[$key]
設置 。 在這種情況下,我建議將您的功能更改為
protected function validateRemove($key)
{
if (!isset($this->collection[$key])) {
throw new CategoryCollectionBadItemException();
}
return true;
}
然后創建另一個測試,當你調用斷言真validateRemove()
和$this->collection[$key]
設置 。
我的例子就是一個例子,因為我真的不知道如何使用這段代碼!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.