我想弄清楚如何限制我的測試,以便覆蓋記者只考慮測試時覆蓋的函數爲該功能編寫,具體爲。如何使用Karma,Jasmine和Istanbul來指定測試應涵蓋哪些函數/方法
從PHPUnit doc下面的例子顯示相當不錯的我儘量做到:
註解@covers可以在測試代碼被用於指定 方法(S)的測試方法要測試:
/**
* @covers BankAccount::getBalance
*/
public function testBalanceIsInitiallyZero()
{
$this->assertEquals(0, $this->ba->getBalance());
}
如果上述測試將被執行,僅功能getBalance
將被標記爲覆蓋,並且沒有其它。
現在來自我的JavaScript測試的一些實際代碼示例。該測試顯示了不受歡迎的行爲,我試圖擺脫的:
it('Test get date range', function()
{
expect(dateService.getDateRange('2001-01-01', '2001-01-07')).toEqual(7);
});
此測試將標記功能getDateRange
作爲覆蓋,而且還從內部getDateRange
叫任何其他功能。由於這個怪癖,我的項目的實際代碼覆蓋率可能比報告的代碼覆蓋率低很多。
我該如何阻止這種行爲?有沒有辦法讓Karma/Jasmine/Istanbul像我想要的那樣工作,還是我需要切換到另一個JavaScript測試框架?
想到的是使用依賴注入和模擬來減少實際生產代碼的調用次數。 – henrikmerlander
我同意henrikmerlander。此外,如果您正在使用真正的函數調用而不是間接在測試方法內部進行模擬,那麼您也正在測試該函數 – ejosafat