Maison > interface Web > js tutoriel > Pourquoi « expect.to.throw » ne parvient-il pas à détecter les erreurs générées dans Chai ?

Pourquoi « expect.to.throw » ne parvient-il pas à détecter les erreurs générées dans Chai ?

DDD
Libérer: 2024-11-27 09:09:10
original
337 Les gens l'ont consulté

Why Does `expect.to.throw` Fail to Catch Thrown Errors in Chai?

Mocha / Chai expect.to.throw : Comprendre comment cela fonctionne

Lors des tests, il est crucial de s'assurer que les erreurs sont générées comme prévu . Cependant, les utilisateurs rencontrent souvent des difficultés avec l'expect.to.throw de Chai, ne parvenant pas à détecter correctement les erreurs générées. Voyons pourquoi cela se produit et comment le résoudre.

Le problème survient lors de la transmission directe du résultat d'un appel de fonction à expect.to.throw. Par exemple, expect(model.get('z')).to.throw(...). Dans ce cas, vous affirmez sur la valeur de retour de model.get('z'), et non sur la génération réelle d'une erreur.

Pour résoudre ce problème, vous devez transmettre une fonction attendant un appel s'attendre. Cette fonction appellerait alors model.get avec les arguments appropriés. Considérons le code suivant :

expect(model.get.bind(model, 'z')).to.throw('Property does not exist in model schema.');
Copier après la connexion

Ici, model.get.bind(model, 'z') crée une nouvelle fonction qui, lorsqu'elle est appelée, invoque model.get avec l'argument 'z', résolvant le problème problème.

Comprendre ce comportement est essentiel pour utiliser efficacement expect.to.throw. N'oubliez pas de transmettre les fonctions qui induiront l'erreur attendue, garantissant ainsi des tests précis des scénarios de gestion des erreurs.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal