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 ?

Pourquoi « expect.to.throw » ne parvient-il pas à confirmer les erreurs générées dans les tests Node.js ?

Patricia Arquette
Libérer: 2024-11-15 15:57:03
original
217 Les gens l'ont consulté

Why Does `expect.to.throw` Fail to Assert Thrown Errors in Node.js Tests?

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.');
});
Copier après la connexion

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.');
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal