Распределение веток в Стамбуле - класс ES6 должен составлять 100%, но только 75%
Я написал очень простой класс и некоторые модульные тесты. Отчет о покрытии должен быть 100%, но я вижу 75% для веток.
![введите описание изображения здесь]()
Я не могу понять, как добраться до 100%, и где я должен понимать, что мне не хватает.
ОБНОВЛЕНИЕ
Единичные тесты:
/* global describe jest it expect */
import GenericDice from '../generic-dice-vanilla';
jest.unmock('../generic-dice-vanilla');
describe('GenericDice', () => {
it('exists.', () => {
expect(GenericDice).toBeDefined();
});
it('has a default face property set to 1', () => {
const dice = new GenericDice();
expect(dice.face).toBe(1);
});
it('has a default rolling property set to true', () => {
const dice = new GenericDice();
expect(dice.rolling).toBe(true);
});
it('has a default animation property set to an empty string', () => {
const dice = new GenericDice();
expect(dice.animation).toBe('');
});
it('outputs something when the render function is called', () => {
const dice = new GenericDice();
const result = dice.render();
expect(result).toBeDefined();
});
});
Я использую Babel.js для перевода этого кода из ES6 в ES5.
Для запуска модульных тестов я использую следующую команду:
jest./src/-u
Весь код можно найти в Github: https://github.com/gyroscopico/generic-dice/tree/feature/35-vanilla
Ответы
Ответ 1
Это связано с версией Jest, которую вы используете, а также с тем, как библиотеки, используемые для сбора покрытия, вы найдете пример практики, если вы выполните следующие действия:
rm -rf node_modules/jest; npm install jest @test babel-jest @test multimatch istanbul-lib-instrument; npm test
- Посмотрите, что сейчас покрытие составляет 100%
Надеемся, что это поможет вам обновить конфигурацию, чтобы получить полный охват.
Ответ 2
Возможно:
Когда вы переносите ES6 в ES5, транспортер иногда добавляет так называемый вспомогательный код, что может привести к уменьшению покрытия. Например, в машинописи этот код:
constructor( x: number, y: number, w: number, h: number ) {
super(); // <- Throws 'Branch not covered'.
this.rect = new Rect( x, y, w, h);
}
переносится на это:
var _this = _super.call(this) || this;
в результате "Филиал не покрыт".
С помощью babel просто добавьте auxiliaryCommentBefore: ' istanbul ignore next '
в свою конфигурацию (документы).
Подробнее об этом читайте в выпуске GitHub.