Maison >interface Web >js tutoriel >Pourquoi « expect.to.throw » ne parvient-il pas à confirmer les erreurs générées dans les tests Node.js ?
Chai : Répondre à l'expect.to.throw insaisissable dans Node.js
L'expect.to.throw de Chai peut s'avérer déroutant dans Node. js tests. Malgré son objectif d'affirmer les erreurs générées, il échoue souvent lorsqu'il est appliqué directement à des extraits de code.
Comprendre le problème :
Considérez l'exemple de cas de test :
it('should throw an error if you try to get an undefined property', function (done) { // Passing the result of model.get('z') directly fails expect(model.get('z')).to.throw('Property does not exist in model schema.'); });
Ce test échoue, bien que l'erreur soit effectivement générée. Une idée fausse courante est que expect.to.throw gère la récupération et l'assertion de l'erreur générée.
Solution : adopter le passage de fonctions :
La clé pour résoudre ce problème le problème réside dans le passage d'une fonction à expect.to.throw au lieu du résultat. Cette fonction sera exécutée par expect, déclenchant la récupération et la validation de l'erreur générée :
expect(model.get.bind(model, 'z')).to.throw('Property does not exist in model schema.');
Dans ce code modifié, model.get est lié au contexte de l'objet modèle et 'z' est défini comme argument. Ensuite, la fonction résultante est transmise à expect.to.throw, garantissant que l'erreur prévue est capturée et affirmée.
En suivant cette approche, vous pouvez exploiter toute la puissance de expect.to.throw dans Node. js, affirmant efficacement l'apparition d'erreurs générées et garantissant la robustesse de votre code.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!