иначе путь не выбран в модульном тестировании

Я работаю над угловым 6

У меня нет другого оператора в приведенном ниже коде. Но я не могу охватить ветки из-за того, что путь else не выбран. Что мне нужно сделать, чтобы получить 100% покрытие ветвей в этом случае?

 getHeaderDocumentList(documents: any) {
            if (documents) {
                documents.result.docAttachment.forEach(element => {
                    this.headerdocumentdetails.push(element.DocumentUniqueID);
                });
            }
        }

person Ramesh Rajendran    schedule 15.11.2019    source источник
comment
Вы пытались передать входные данные, которые оцениваются как ложные, в оператор if и обойти его?   -  person Alexis Pavlidis    schedule 15.11.2019


Ответы (1)


Чтобы получить отчет о полном покрытии, код должен в конечном итоге попасть в (здесь явно не существующий) else-путь. В этом случае передайте параметр falsy, например 0 | false | undefined | null | NaN | '' | "" | ``, как в

component.getHeaderDocumentList(false);
expect(false).toEqual(false); // This line is optional. Most test suites require some kind of assertion in each test.

Теперь ваш набор тестов должен сообщать об обеих ветвях как покрытых.

Последним решением было бы добавить /* istanbul ignore else */ перед случаем if. Это скажет репортеру освещения эффективно игнорировать путь else

person Philipp Meissner    schedule 15.11.2019
comment
Хорошая идея! Но в некоторых случаях я не могу это исправить. В любом случае на данный момент достаточно 80%. И еще один вопрос: слышали ли вы что-нибудь об sourceMap:true? - person Ramesh Rajendran; 15.11.2019
comment
Хм, это довольно странно. Он должен перестать жаловаться, как только вы снова запустите тесты. - person Philipp Meissner; 15.11.2019
comment
Последним решением было бы добавить /* istanbul ignore else */ перед случаем if. Это скажет репортеру освещения эффективно игнорировать путь else. - person Philipp Meissner; 15.11.2019
comment
Если ожидаемый результат ложного/пустого списка документов состоит в том, что headerdocumentdetails не изменяется, это допустимый тест. - person Erik Philips; 16.11.2019