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 ?
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!