如何使用Mocha测试全局变量?

时间:2017-04-11 20:40:49

标签: javascript node.js mocha

使用Mocha进行测试时,如何加载foo.js以便foo-test.js可以测试全局变量,例如giveMeFive()?

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.' );
  });
});

如果解决方案可以通过Bamboo自动化,那将是理想的。

1 个答案:

答案 0 :(得分:0)

您可以使用import * as thisNameDoesntMatter from 'foo'或使用es5样式(在这种情况下更干净),require('foo')和该文件中定义的全局变量将在全局范围内可用。

例如,如果您定义以下JavaScript文件:

//test.js

aGlobalVariable = 'someValue';

let aLocalVariable = 'anotherValue';

export default aLocalVariable;

这是Babel将生成的代码(使用es2015预设和"node"环境):

//test-compiled.js
'use strict';

Object.defineProperty(exports, "__esModule", {
  value: true
});
global.aGlobalVariable = 'someValue';

var aLocalVariable = 'anotherValue';

exports.default = aLocalVariable;

如您所见,aGlobalVariable声明保留在模块中。由于整个编译文件在导入时将被评估,因此每当您导入此模块时,aGlobalVariable将在全局范围内可用(如果您选择了"browser"环境,则会在{{1}上定义它})。您不需要显式请求导入全局变量。