Schauen Sie sich das Optimistenmodul von Substack und nconf von flatiron an. Viele meiner Tests hängen von externen Parametern ab, und die Module optimist und nconf erleichtern das Laden von Konfigurationsoptionen aus einer JSON-Datei
Übergeben Sie in Ihrem Testbefehl den Pfad zur Datei config.json
Testbefehl
mocha test/api-test.js --config=/path/to/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 configFilePath = argv.config
assert.ok(fs.existsSync(configFilePath), 'config file not found at path: ' + configFilePath)
var config = require('nconf').env().argv().file({file: configFilePath})
var apiConfig = config.get('api')
var apiKey = apiConfig.key
config.json
{
"api": {
"key": "fooKey",
"host": "example.com",
"port": 9000
}
}
Alternative
Ein anderes Muster, das ich kürzlich verwendet habe, ist das Konfigurationsmodul . Sie können eine ./config/default.yml
Datei für die regelmäßige Ausführung und eine ./config/test.yml
Datei für Tests angeben .
Wenn Sie Ihre Testsuite ausführen, exportieren Sie NODE_ENV = test und das Konfigurationsmodul wird geladen test.yml
In Ihrem Code ist es einfach, auf das Konfigurationsobjekt zuzugreifen
var config = require('config')
// config now contains your actual configuration values as determined by the process.env.NODE_ENV
var apiKey = config.api.key
Eine einfache Möglichkeit, NODE_ENV = test zu setzen, besteht darin, Ihre Tests mit einem Makefile auszuführen. Führen Sie alle Ihre Tests über aus make test
. Um einen einzelnen Test auszuführen, führen Sie ihn ausmake one NAME=test/unit/sample-test.js
Beispiel-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
env KEY1=YOUR_KEY1 KEY2=YOUR_KEY2 mocha test