Comment Complètement Fin à un Test de Noeud Moka le Poursuivre Sans
Comment forcer un Mochajs test à la fin complètement sans poursuivre sur les prochains tests. Un scénario peut être éviter les résultats d'autres tests si l'environnement a été accidentellement mis à la production et j'ai besoin de prévenir les tests de continuer.
J'ai essayé de lancer des Erreurs mais qui n'ont pas arrêter tout le test, car il s'exécute de façon asynchrone.
OriginalL'auteur adam8810 | 2014-08-27
Vous devez vous connecter pour publier un commentaire.
Le genre de "test" dont vous parlez --- à savoir vérifier si l'environnement est correctement configuré pour la suite de test à exécuter --- doit être fait dans un
before
crochet. (Ou peut-être dans unbeforeEach
crochet, maisbefore
semble plus appropriée pour faire ce que vous décrivez.)Cependant, il serait préférable d'utiliser ce
before
crochet pour définir un environnement isolé pour exécuter des suites de tests. Il prendrait la forme:Si il ya une raison impérieuse qui fait en sorte que vous ne pouvez pas créer un environnement de test avec un crochet et vous doit effectuer un contrôle au lieu de cela, vous pourriez le faire comme ceci:
Une défaillance dans le
before
crochet s'en empêcher l'exécution de tout rappel donné àit
. Tout au plus, Moka va effectuer laafter
crochet (si vous spécifiez un) pour effectuer le nettoyage après l'échec.Noter que si le
before
crochet est asynchrone ou pas n'a pas d'importance. (Ou si vos tests sont asynchrones.) Si vous l'écrire correctement (et appeldone
lorsque vous avez terminé, si elle est asynchrone), Moka va détecter qu'une erreur s'est produite dans le crochet et de ne pas exécuter des tests.Et le fait que Moka poursuit ses essais après vous avez une panne dans un test (un rappel à
it
) ne dépend pas de savoir si les tests sont asynchrones. Moka ne pas interpréter l'échec d'un test comme une raison pour arrêter l'intégralité de la suite. Il continuera à essayer d'exécuter des tests, même si un test précédent a échoué. (Comme je l'ai dit ci-dessus, un échec dans un crochet est une autre affaire.)skip()
méthode qui leur document à l'aide dans ce qui semble être assez bien cette situation. Citant à partir de la fin de la Inclusive Tests l'article: "Vous pouvez également passer à l'exécution à l'aide dethis.skip()
. Si un test besoin d'un environnement ou de la configuration qui ne peut pas être détecté à l'avance, à l'exécution, skip est approprié. Par exemple... {code assez semblables à ceux de cette réponse}...Avant de Moka v3.0.0, ce.skip() n'a pas été pris en charge dans asynchrone des tests et des crochets."Je suis bien conscient de
skip
mais je ne pense pas qu'il est bien adapté pour le scénario de l'OP est en train de décrire. Quelqu'un ayant mis de l'environnement à la "production" plutôt que de "test" pouvez en avoir assez des conséquences néfastes.skip
dit Moka "il suffit de sauter cette" mais sinon, n'implique pas que il y a eu une grave vis quelque part. Le déclenchement d'une exception dans un crochet est le moyen le plus approprié pour que les développeurs conscient de la vis. Moka échouera et fort rapport de l'exception qu'il a obtenu.OriginalL'auteur Louis
Je suis généralement d'accord avec Glen, mais puisque vous avez un décent cas d'utilisation, vous devriez être en mesure de déclencher nœud de sortie avec la
process.exit()
de commande. Voir http://nodejs.org/api/process.html#process_process_exit_code. Vous pouvez l'utiliser comme ceci:OriginalL'auteur Jessie A. Morris