Учитывая эту функциюгенераторы Модульное тестирование с `` return` и yield`
function* backflip(query) {
return yield 123;
}
и этот тест
describe('backflip',() =>
it('should do that ^',() =>
let handlerInstance = handler();
expect(handlerInstance.next().value).to.equal(123);
expect(handlerInstance.next().done).to.equal(true);
);
);
Стамбул, следует сказать, что все ветви покрыты, но на самом деле это охватывает 3 из 4. Удаление return
устраняет проблему.
return
иyield
вместе антипаттерн?- Это ошибка?
Для контекста, Бабель компилирует этот как
"use strict";
var _marked = [backflip].map(regeneratorRuntime.mark);
function backflip(query) {
return regeneratorRuntime.wrap(function backflip$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return 123;
case 2:
return _context.abrupt("return", _context.sent);
case 3:
case "end":
return _context.stop();
}
}
}, _marked[0], this);
}
Как вы выполняете аннотирование кода с отслеживанием покрытия? – loganfsmyth
В коде компиляции вы видите, что 'case 3' никогда не был достигнут. Вы должны быть обеспокоены только охватом кода кода, который вы пишете, а не сгенерированного кода. –