如何用Mocha测试全局变量?
使用Mocha进行测试时,如何加载foo.js以便foo-test.js可以测试诸如giveMeFive()之类的全局变量?如何用Mocha测试全局变量?
foo.js:
function giveMeFive() {
return 'High five!');
}
FOO-test.js:
describe('#convertNumberToDollar()', function() {
it('should get a successful high five',() => {
assert.ok(giveMeFive() === 'High five!', ' successful high five.');
});
});
这将是理想的,如果该解决方案可以通过竹被自动化。
您可以使用import * as thisNameDoesntMatter from 'foo'
或使用es5样式(在这种情况下更干净),require('foo')
,并且该文件中定义的全局变量将在全局范围内可用。
举例来说,如果你定义以下JavaScript文件:
//test.js
aGlobalVariable = 'someValue';
let aLocalVariable = 'anotherValue';
export default aLocalVariable;
这是代码巴贝尔将产生(使用es2015
预设和"node"
环境):
//test-compiled.js
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
global.aGlobalVariable = 'someValue';
var aLocalVariable = 'anotherValue';
exports.default = aLocalVariable;
,你可以看,aGlobalVariable
声明保存在模块中。由于整个编译后的文件将在导入时进行评估,因此无论何时导入此模块(如果选择"browser"
环境,它将在window
上定义),全局范围内都会提供aGlobalVariable
。您不需要明确请求要导入的全局变量。
嗨!感谢您的答复。我的问题是如何用Mocha测试全局变量?我如何加载包含全局变量的foo.js?我使用的遗留代码充满了许多全局文件。 –
您可以像加载导出模块的文件一样加载文件。如果文件包含全局变量,这些全局变量将像往常一样在'global'(在Node中)或'window'(在浏览器中)对象上设置。我编辑了我的答案来解决这个问题。 –
谢谢。我不知道导入*作为解决方案。根据我的需要,这并没有出于某种原因,但gulp-mocha-phantomjs帮助我在Node中运行我的Mocha html测试运行器。干杯! –
你在节点中运行摩卡吗?在这种情况下,你可以使用'require'(或者如果你使用Babel则使用'import') –
即使giveMeFive()是全局的吗? –
现在查看我的答案。 –