Я пытаюсь выяснить, как ограничить свои тесты, чтобы репортер покрытия рассматривал только покрываемую функцию, когда тест был написан специально для этой функции.
Следующий пример из PHPUnit doc довольно хорошо показывает, что я пытаюсь достигать:
Аннотацию @covers можно использовать в тестовом коде, чтобы указать, какой метод (ы) тестовый метод хочет протестировать:
/**
* @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?