Стамбул, как игнорировать ветку значений по умолчанию для ES6 (babel компилируется в ES5)

В ES5 мы можем написать так:

function(a){
  /* istanbul ignore next */
  a = a || 123;
}

как игнорировать В ES6?

function(a = 123 ){

}

Я пробовал это:

function(/* istanbul ignore next */a = 123 ){

}

но это не работает.


person Sabrina Luo    schedule 29.04.2016    source источник
comment
Вы можете покрыть случай, написав тестовый пример без передачи аргумента «а».   -  person Frozen Crayon    schedule 15.09.2016
comment
Это бесполезно. В случае, когда по умолчанию открывается сокет, или выполняется запись в файл, или модифицируется база данных, или выполняется какой-либо другой побочный эффект, непередача аргумента не всегда возможна.   -  person joelnet    schedule 09.09.2017
comment
По умолчанию, вероятно, не следует выполнять эти операции, поскольку они должны быть асинхронными. Инициализатор по умолчанию не может быть асинхронным.   -  person Aluan Haddad    schedule 31.10.2017
comment
Попробуйте ответить на вопрос, а не обсуждать достоинства кода. Вы не знаете, чего вы не знаете.   -  person Joel Day    schedule 23.06.2018


Ответы (2)


Это работает для меня:

function(
  /* istanbul ignore next */
  a = 123
){

}
person jesset    schedule 12.07.2018

При использовании TypeScript это было немного сложнее решить, поскольку типы должны совпадать. Я смог заставить его работать, передав undefined для каждого параметра. Например...

function testMe(a:SomeType = { foo: 'bar' }, b:AnotherType = { bar: 'baz'}) {
  return a * b;
}
describe('Branch Coverage', () => {
  it('should pass branch coverage', () => {
    expect(testMe(undefined, undefined);
  });
});
person bmarti44    schedule 25.04.2019