Compte tenu de cette fonctiongénérateurs de tests unitaires avec `return` et` yield`
function* backflip(query) {
return yield 123;
}
Et ce test
describe('backflip',() =>
it('should do that ^',() =>
let handlerInstance = handler();
expect(handlerInstance.next().value).to.equal(123);
expect(handlerInstance.next().done).to.equal(true);
);
);
Istanbul, devraient dire toutes les branches sont couvertes, mais en fait cela couvre 3 sur 4. Suppression return
résout le problème.
- Est-ce que
return
etyield
forment ensemble un anti-motif? - Est-ce un bug?
Pour le contexte, Babel compile ce que
"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);
}
Comment courez-vous l'annotation du code avec le suivi de la couverture? – loganfsmyth
Vous pouvez voir dans le code de compilation que 'case 3' n'est jamais atteint. Vous devriez seulement vous soucier de la couverture de code du code que vous écrivez, pas du code généré. –