Maison  >  Article  >  interface Web  >  Pourquoi `expect.to.throw` ne parvient-il pas à détecter les erreurs générées dans les tests Mocha/Chai ?

Pourquoi `expect.to.throw` ne parvient-il pas à détecter les erreurs générées dans les tests Mocha/Chai ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-17 11:53:01796parcourir

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

Mocha / Chai Expect.to.throw ne détecte pas les erreurs générées ?

Dans vos tests node.js, vous rencontrez des difficultés pour utiliser Expect.to de Chai .throw pour détecter les erreurs générées. Les tests échouent systématiquement, signalant l’erreur générée. Cependant, si vous encapsulez le test dans un bloc try-catch et affirmez l'erreur capturée, le test réussit.

Est-ce que expect.to.throw ne fonctionne pas comme prévu ?

Pour résoudre ce problème, vous devez transmettre une fonction pour attendre, et non le résultat de l'appel de fonction :

expect(model.get.bind(model, 'z')).to.throw('Property does not exist in model schema.');
expect(model.get.bind(model, 'z')).to.throw(new Error('Property does not exist in model schema.'));

Dans votre approche originale, vous transmettiez le résultat de l'appel de model.get('z') auquel vous vous attendez. Pour tester si une fonction génère une erreur, vous devez fournir une fonction qui s'attend à s'appeler elle-même. La méthode bind crée une nouvelle fonction qui, lorsqu'elle est appelée, appelle model.get avec les arguments attendus.

Reportez-vous à la documentation fournie pour plus de précisions sur la méthode bind.

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