Maison  >  Article  >  interface Web  >  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
DDDoriginal
2024-11-27 09:09:10281parcourir

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.');

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!

Déclaration:
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