Maison > Article > interface Web > Pourquoi Expect.to.throw de Mocha ne parvient-il pas à détecter mes erreurs attendues ?
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.'));
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!