Où placer les tests unitaires dans Meteor?

y a-t-il un endroit où mes tests peuvent vivre sans être dirigés par Meteor?

je viens de commencer mon premier projet Meteor, et j'ai commencé par écrire des tests unitaires avec Mocha et devrait.js . Bien que mocha fonctionne sans problème, les tests empêchent Meteor de démarrer car il a des problèmes en utilisant node require au lieu de __meteor_bootstrap__.require ( message d'erreur complet ).

cela dit, Meteor ne devrait pas faire mes tests! selon la documentation météore , le code ne peut être placé que sur le client, le serveur, ou les deux. Les suites de tests unitaires n'appartiennent pas à ces catégories, et je suis pas la seule personne confus par le manque de Meteor d'un emplacement bien défini pour placer des tests automatisés.

en ce moment, mes tests sont conservés dans server/test/ , avec le contenu de chaque fichier enveloppé dans le bloc:

if (typeof(Meteor) === 'undefined') { ... }

bien que cela fonctionne, il ne se sent pas élégant. Avez-vous d'autres suggestions pour structurer vos tests avec votre application Meteor?

mise à Jour: en lieu et place des instructions explicites dans le Météore docs, j'ai suivi le Rails dossier conventions (4e paragraphe), à l'aide d'un dossier appelé test pour le stockage de mes tests actifs. Plus tard, j'ai déplacé cette server/test car je ne veux pas chargé sur le client.

21
demandé sur Community 2012-08-03 01:16:09

4 réponses

placez vos tests dans le dossier tests/ 151950920" . Contrairement à Rails, qui utilise un dossier nommé test à cette fin, Meteor utilise le pluriel tests pour ce nom de dossier.

les ressources stockées dans un dossier nommé" tests "seront complètement ignorées par Meteor; ces ressources ne seront pas chargées sur le serveur client ou .

ironiquement, j'ai été averti par quelqu'un ayant le numéro opposé qui veut que leurs tests soient chargés par le client Meteor.

18
répondu Blackcoat 2012-08-11 18:57:45

à partir de 0.6.0, une approche intéressante est d'utiliser exclusivement des paquets intelligents locaux pour votre application, qui peut être facilement testé en utilisant le tinytest de Meteor. Vous auriez le code minimum vivant en dehors des paquets intelligents pour démarrer votre application.

EDIT: j'ai fait cette approche, et je n'ai même pas besoin de code minimum en dehors des paquets intelligents. L'ensemble de l'application est de paquets.

2
répondu matb33 2013-07-10 21:36:18

placez vos fichiers de test dans le dossier tests et tout ira bien. Si votre application est telle que vous avez plusieurs fichiers imbriqués dans le dossier server ou client , vous pouvez répliquer une structure de dossier similaire dans votre répertoire tests/client ou tests/server . Pas une règle mais je pense que cela aide pour la maintenance et j'ai eu l'expérience de passer des heures à déboguer l'erreur de classe manquante qui a été simplement résolu en organisant la structure de fichier dans le dossier de test.

1
répondu anie codeskol 2015-11-01 19:05:57

comme il s'agit d'une question de 2012, et qu'il n'y a pas de réponse complète ici, je voudrais en essayer une ici.

c'est un bon point de départ pour commencer à penser à tester votre projet meteor.

en un mot Étape 1: Ajouter un météore sanjo: jasmine Etape 2: meteor ajouter de la vitesse:html-reporter

le moment où vous faites ceci, et si votre application est en cours ( ou chaque fois que vous démarrez votre application en marche arrière), sur le coin supérieur droit du navigateur - où vous ouvrez votre application est ouverte - vous commencerez à voir un point clignotant. C'est tout. Vous avez maintenant votre cadre de test en place.

Maintenant vous pouvez réellement produire une structure de répertoire avec l'aide de ce cadre également. Au moment où vous cliquez sur ce point clignotant, vous verrez une fenêtre comme ci-dessous.

Velocity Test Status

ceci a des liens de commodité pour générer votre structure de répertoire de test.

Sinon, vous pouvez le faire manuellement comme ci-dessous. Ensuite, il faut décider de la structure du répertoire. la Documentation Meteor en dit assez. Vous devez avoir le dossier tests dans votre racine de projet .

à partir de ici , vous pouvez faire comme ça.

<projectRoot>
|---jasmine
      |---client
             |--- integration
                      |---- my.first.integration.spec.js
      |---client
             |--- unit
                      |---- my.first.unit.spec.js
|---jasmine
      |---server
             |--- integration
                      |---- my.first.integration.spec.js
      |---server
             |--- unit
                      |---- my.first.unit.spec.js

Et Alto, commence à écrire tes tests sur jasmine. Ces messages peuvent vous aider davantage.

1
répondu Tyagi Akhilesh 2016-01-07 13:49:46