Moka tests supplémentaires, des options ou des paramètres
Je suis en train d'écrire des cas de test pour mon Node.js application à l'aide de Moka. Le cas de test besoin d'une clé API comme un supplément d'entrée de l'option ou le paramètre. La clé API est privé, donc je ne veux pas l'inclure directement dans les fichiers de test comme tout le monde alors peut le voir sur GitHub. Je sais qu'il ya des options disponibles pour Moka à:
Mais est-il possible d'inclure certains paramètres de laisser les testeurs de spécifier leur propre clé API pour le test de la ligne de commande? Tels que:
./node_modules/mocha/bin/mocha test/*.js --key YOUR_KEY
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que Moka prend en charge de passer des paramètres supplémentaires pour vos tests, mais vous pouvez utiliser des variables d'environnement:
Et de les lire dans vos fichiers de test:
env KEY1=YOUR_KEY1 KEY2=YOUR_KEY2 mocha test
Prendre un coup d'oeil à la optimiste module par Substack et nconf de flatiron. Beaucoup de mes tests dépend de paramètres extérieurs et l'optimiste et nconf modules rend facile à charger les options de configuration à partir d'un fichier json
Dans votre commande test passer le chemin d'accès à la config.fichier json
commande test
api-test.js
config.json
Alternative
Un autre modèle que j'ai été en utilisant récemment est la config module. Vous pouvez spécifier un
./config/default.yml
fichier pour l'exécution régulière et une./config/test.yml
fichier pour les tests.Lors de l'exécution de la suite de test, l'exportation NODE_ENV=test et la config du module de charge
test.yml
Dans votre code, il est facile d'accéder à la configuration de l'objet
Un moyen facile de NODE_ENV=test est en cours d'exécution de vos tests avec un fichier makefile. Exécutez vos tests via
make test
. Pour exécuter un test unique exécutermake one NAME=test/unit/sample-test.js
Exemple de makefile
Il n'y a aucun moyen de le faire avec Moka. l'approche proposée consiste à utiliser un fichier (par exemple de config.json), l'exigent, et de laisser d'autres personnes de le modifier.
Cela étant dit, si vous passez votre clé à la fin de la ligne de commande (après le fichier de test) et de l'utilisation -- il devrait être disponible à l'aide de processus.argv (si vous n'utilisez pas -- ou ce n'est pas après un nom de fichier, puis moka échouera).
si vous exécutez
./node_modules/mocha/bin/mocha --reporter spec test.js --apiKey=someKey
, et test.js contient le code:le test doit passer
L'un des moyens les plus faciles pour passer des paramètres similaire au processus.argv[index] méthode mentionné dans ce fil de discussion est d'utiliser le mécanisme national de prévention variables de configuration. Cela vous permet de voir le nom de la variable un peu plus clairement:
commande test:
paquet.json:
test.js
Autres réponses sont limitées, car elles ne prennent pas en charge l'exécution de code avant l'exécution de la suite de test. Ils prennent uniquement en charge la transmission des paramètres.
Cette réponse prend en charge l'exécution de code AVANT la suite de test est exécuté et est entièrement documentée par moka
moka docs: http://unitjs.com/guide/mocha.html#mocha-opts
créer ./test/moka.opte
créer ./server.bootstrap.js
créer ./test/test.bootstrap.js
enfin dans votre server.js:
FAIT!
Le code dans le serveur d'amorçage sera exécuté avant l'essai et de l'exécution du serveur (mnp de début et de mnp test)
Le code dans le test de bootstrap ne sera exécuté avant l'essai (mnp test)
Grâce à @damianfabian pour ce voir Comment initialiser une variable globale dans l'exécution des tests unitaires?
Vous pouvez passer un argument à moka script de test à l'aide de 'minimist module.
Installer avec
npm install minimist
Terminal:
Moka le nœud de script:
Je pouvais envoyer paramètre pensée mochaStream (require('spawn-moka-parallèle").mochaStream).
comme:
À l'intérieur ..spec.js fichier
Une manière simple, à l'aide de processus.argv qui contiennent de la ligne de commande args
Plus tard, vous pouvez obtenir YOUR_KEY dans votre code:
Pour voir tous les processus.argv
Sortie
J'ai lu pas mal de réponses à certaines questions, la plupart d'entre eux, plus complexe que la solution doit être.
Disons que j'ai
config.yml
ouconfig.json
. Dans mon cas, c'est un fichier YAML.Tout d'abord j'ai installer le
yamljs
de dépendance. Il a une fonction appeléeload
.Fondamentalement, ce que je fais:
const YAML = require('yamljs');
const ymlConfig = YAML.load('./config.yml');
Puis-je aller pour:
process.env.setting1 = ymlConfig.setting1;
process.env.setting2 = ymlConfig.setting2;
Et bien sûr - tout cela est fait dans votre fichier de test.
si vous êtes le débogage/des tests avec Moka barre latérale (VS extension de Code), il suffit de mettre:
à
.vscode/settings.json