Что именно не хватает в моих тестах на Стамбул, чтобы жаловаться на отсутствие покрытия филиалов? - PullRequest
0 голосов
/ 24 апреля 2019

Что касается меня, я не могу понять, на что здесь жалуется Стамбул.У меня есть одна ветвь, которая обнаружена в этом файле.Вот соответствующая часть рассматриваемого компонента (я убрал несвязанные биты, чтобы избежать шума):

export class TextComponent {
    value: string;
    _field: FieldModel;
    private _record: any;

    @Input()
    set field(field: FieldModel) {
        this._field = field;
        this.cacheValue();
    }

    @Input()
    set record(record: any) {
        this._record = record;
        this.cacheValue();
    }

    cacheValue() {
        this.value = this.getValue();
    }

    getValue(): string {
        if (!this._record || !this._field) {
            return '';
        }

        return this._field.name in this._record ? this._record[this._field.name] : '';
    }
}

И пример теста:

    it('should store the record value', () => {
        component.record = {
            first: "Nancy",
            last: "Sue",
        };
        expect(component.value).toBe('');

        component.field = {name: 'first'};
        expect(component.value).toBe('Nancy');
    });

Мой охват кода составляет 100%кроме одной недостающей ветви.Вот что показывает отчет о покрытии кода:

enter image description here

Я точно знаю, что маленькая желтая подсветка - это ветка, которую Стамбул не считает покрытой,Тем не менее, я понятия не имею, на что это действительно жалуется, и поэтому я не знаю, как написать тест, чтобы покрыть это.Образец теста, который я включил, является основным тестом для этой функции.Очевидно, что он в некотором роде несовершенен, но я не понимаю, каким образом, и этот небольшой акцент не очень информативен.

Angular 7.1.0, машинописный текст 3.1.6

1 Ответ

1 голос
/ 24 апреля 2019

Похоже, это открытый выпуск для Стамбула .Кажется, что использование другого класса таким способом может вызвать некоторые проблемы.Одним из возможных исправлений в этом потоке является указание типа возврата типа any для метода.Вероятно, проблема заключается в javascript, в который переводится TS.Javascript, скорее всего, имеет ветку, где нет вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...