我知道全局变量很糟糕,但我想用一个.
摘自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测试文件中.
如何为每个spec文件加载全局变量?
您只需要在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