Как инициализировать глобальную переменную в unit test работает?
Я понимаю, что глобальные переменные являются плохими, но я хочу использовать их.
выдержка из package.json:
"scripts": {
"start": "nodemon jobsServer.js",
"test": "cross-env NODE_ENV=test ./node_modules/.bin/istanbul cover -x \"**/*.spec.js\" ./node_modules/mocha/bin/_mocha -- jobs js --recursive -R spec"
},
jobsServer.js:
global.appPath = require('app-root-path');
// more code here
Теперь я хочу иметь доступ к appPath в любом месте приложения.
Когда я запускаю npm start
, он выбирает глобальную переменную, и я счастлив.
Но когда я запускаю npm test
, он не загружает глобальный (поскольку глобальный определяется в файле сервера), и поэтому все ссылки на appPath прерываются.
Я НЕ хочу делать:
const appPath = require('app-root-path');
В каждом тестовом файле .spec.js.
Как загрузить глобальную переменную для каждого файла спецификации?
Ответы
Ответ 1
Вам просто нужно добавить установочный файл в test/mocha.opts, который будет загружен до начала любого теста, тогда вы сможете получить доступ к этим глобальным переменным, например:
тест/mocha.opts
--require should
--require ./test/setup
--ui bdd
--globals global
--timeout 200
тест/setup.js
global.app = require('some-library')
global.window = {}
global.window.document = {}
документы:
http://unitjs.com/guide/mocha.html#mocha-opts