Maison > interface Web > js tutoriel > le corps du texte

Pourquoi Expect.to.throw de Mocha ne parvient-il pas à détecter mes erreurs attendues ?

Linda Hamilton
Libérer: 2024-11-24 03:29:09
original
961 Les gens l'ont consulté

Why is Mocha's expect.to.throw Failing to Catch My Expected Errors?

Problème avec l'expect.to.throw de Mocha Erreurs levées manquantes

Lors de l'utilisation de l'expect.to.throw de Chai pour tester les exceptions dans votre nœud .js, vous risquez de rencontrer des résultats inattendus. Si le test échoue en raison d'une erreur non détectée, mais que l'exécution du test dans try...catch et l'affirmation de l'erreur détectée réussissent, vous pourriez remettre en question la fonctionnalité de expect.to.throw.

Le nœud du problème réside dans la manière dont fonctionne expect.to.throw. Pour tester efficacement l’occurrence d’une exception, une fonction est nécessaire en entrée. En transmettant une fonction à attendre, il peut invoquer cette fonction et vérifier si une exception est levée.

Dans l'extrait de code fourni, vous transmettez directement le résultat de model.get('z') à attendre . Cependant, cette approche transmet la valeur de retour de la fonction au lieu de la fonction elle-même. Pour remédier à cela, vous devez fournir à expect une fonction qui exécute model.get lorsqu'elle est appelée.

Code mis à jour :

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

En employant la méthode bind, une nouvelle fonction est créée. Lorsqu'il est invoqué, il appelle model.get avec les arguments spécifiés, simulant ainsi l'exécution de model.get('z'). Cela permet à expect.to.throw d'évaluer si une exception est levée lors de l'exécution de la fonction.

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