Comment puis-je générer dynamiquement des cas de test en javascript/node?
Le nez framework de test (pour python) prend en charge de générer dynamiquement des cas de test au moment de l'exécution (ci-après, à partir de la documentation, les résultats dans cinq différents cas de test):
def test_evens():
for i in range(0, 5):
yield check_even, i, i*3
def check_even(n, nn):
assert n % 2 == 0 or nn % 2 == 0
Comment puis-je obtenir ce résultat en utilisant des frameworks javascript tels que moka ou qunit? (Je ne suis pas attaché à un cadre particulier à ce stade.)
Mon cas d'utilisation est l'écriture d'un test de coureur à surveiller plusieurs éléments sur un serveur externe. Je voudrais fournir une liste d'Url de ressource. Chaque test de tentatives d'obtention de la ressource et retourne le succès ou l'échec en fonction de ce qu'il trouve. J'ai un prototype construit en python (à l'aide de nez), mais souhaitez mettre en œuvre dans node.js si je peux. Finalement, ce serait incluse dans la CI de l'installation.
- nœud comme dans
node.js
? Peut-être vous devriez le tag, depuis un peujavascript
sera interprété en ce sens javascript dans le navigateur. - re-marqué. merci!
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez créer dynamiquement des suites de test avec des cas à l'aide de Moka. J'ai installé moka à l'échelle mondiale
npm install -g mocha
et j'utilise devrait.node-tap
, qui fonctionne bien hors de la boîte.Si vous voulez créer dynamiquement
It()
tests à l'aide de données obtenues de manière asynchrone, vous pouvez (ab)utiliser lebefore()
crochet avec un espace réservéIt()
test pour s'assurer de moka attend jusqu'à ce quebefore()
est exécuté. Voici l'exemple de ma réponse à une question relative à la, pour plus de commodité:after()
bloc alors vous remarquerez qu'il n'est pas d'attente pour lesbefore()
à la fin. La boucle de labefore()
va sûrement créer tous cesdescribe()
blocs, mais il ne sera pas attendre pour eux à la fin. Aucun moyen de le réaliser?before()
appel n'complet avant d'invoquer une déclaréafter()
appels. Cependant, toutes les promesses invoquée à l'intérieur de son rappel peut ne pas être terminée alors, qui est juste la nature de l'asynchrone en javascript. Il semble que votre question est vraiment un plus générale sur la façon javascript promesses de travail et de coordination, plutôt que de générer moka tests dynamiquement, comme demandé dans cette question. Il serait hors-sujet pour aborder les fonctions javascript ici, mais je vous encourage à créer une nouvelle question si vous ne trouvez pas une réponse satisfaisante de votre recherche.Il est intéressant de noter que, en plus de la accepté la réponse ci-dessus, moka est docs incluent maintenant un exemple de la façon d'atteindre cet. J'ai reproduit ci-dessous pour la postérité.
Avec Moka 1.21.4, vous pouvez créer la suite/test à l'exécution de la manière suivante.
Voir https://gist.github.com/cybertk/fff8992e12a7655157ed pour plus de détails
Yep! Brillant conseils de Quanlong!
Voici mon exemple de la dynamique de génération de test avec Nœud readline module:
J'aime @rob3c réponse, mais a essayé de le simplifier un peu: