Jetons un œil au module optimist de Substack et nconf de flatiron. Beaucoup de mes tests dépendent de paramètres externes et les modules optimist et nconf facilitent le chargement des options de configuration à partir d'un fichier json
Dans votre commande de test, passez le chemin du fichier config.json
commande de test
mocha test/api-test.js --config=/chemin/vers/config.json --reporter spec
api-test.js
var path = require('path')
var fs = require('fs')
var assert = require('assert')
var argv = require('optimist').demand('config').argv
var cheminFichierConfig = argv.config
assert.ok(fs.existsSync(cheminFichierConfig), 'fichier config non trouvé au chemin: ' + cheminFichierConfig)
var config = require('nconf').env().argv().file({file: cheminFichierConfig})
var apiConfig = config.get('api')
var cleApi = apiConfig.key
config.json
{
"api": {
"key": "fooKey",
"host": "example.com",
"port": 9000
}
}
Alternative
Un autre motif que j'utilise récemment est le module config. Vous pouvez spécifier un fichier ./config/default.yml
pour l'exécution régulière et un fichier ./config/test.yml
pour les tests.
Lorsque vous exécutez votre suite de tests, exportez NODE_ENV=test et le module de configuration chargera test.yml
Il est facile d'accéder à l'objet de configuration dans votre code
var config = require('config')
// config contient maintenant vos valeurs de configuration actuelles telles que déterminées par process.env.NODE_ENV
var cleApi = config.api.key
Un moyen simple de définir NODE_ENV=test est d'exécuter vos tests avec un fichier makefile. Exécutez tous vos tests via make test
. Pour exécuter un seul test, exécutez make one NAME=test/unit/sample-test.js
Exemple de makefile
MOCHA?=node_modules/.bin/mocha
REPORTER?=spec
GROWL?=--growl
FLAGS=$(GROWL) --reporter $(REPORTER) --colors --bail
test:
@NODE_ENV="test" \
$(MOCHA) $(shell find test -name "*-test.js") $(FLAGS)
one:
@NODE_ENV="test" \
$(MOCHA) $(NAME) $(FLAGS)
unit:
@NODE_ENV="test" \
$(MOCHA) $(shell find test/unit -name "*-test.js") $(FLAGS)
integration:
@NODE_ENV="test" \
$(MOCHA) $(shell find test/integration -name "*-test.js") $(FLAGS)
acceptance:
@NODE_ENV="test" \
$(MOCHA) $(shell find test/acceptance -name "*-test.js") $(FLAGS)
.PHONY: test