当前位置:  开发笔记 > 编程语言 > 正文

如何在单元测试运行中初始化全局变量?

如何解决《如何在单元测试运行中初始化全局变量?》经验,为你挑选了1个好方法。

我知道全局变量很糟糕,但我想用一个.

摘自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文件加载全局变量?



1> damianfabian..:

您只需要在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

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有