如何使用should.js作为全局变量:

时间:2018-09-17 22:04:27

标签: javascript node.js global-variables mocha should.js

我正在尝试使用mocha和should.js编写一些单元测试,因为我想保持每个单元测试的格式相同,并且每个单元测试都需要should.js来验证对象的性能。我如何才能将其设置为全局变量,所以到目前为止,我已经尝试过的每个测试文件都不需要require.js

global.should = require('should');
describe('try gloabl'), () => {
  it('should work'), () => {
    let user = { name: 'test'};
    global.should(user).have.property('name', 'test');
  });
});
#error, global.should is not a function

如果我用这个。它有效

const should = require('should');
should = require('should');
describe('try gloabl'), () => {
  it('should work'), () => {
    let user = { name: 'test'};
    global.should(user).have.property('name', 'test');
  });
});

1 个答案:

答案 0 :(得分:1)

首先,I'm tired of writing "require"是使用GLOBAL变量的最坏原因。使用require是常规的处理方式,这是有原因的,它与必须在每个文件中import或键入using的任何其他语言没有什么不同。它只是使以后理解代码的作用变得更加容易。 有关更多说明,请参见this

现在,这就是说,当需要should时,该模块实际上将其自身附加到GLOBAL变量,并使describeitshould的访问方法可用。

index.js

require('should');

describe('try global', () => {
    it('should work with global', () => {
        let user = { name: 'test' };
        global.should(user).have.property('name', 'test');
    });
    it('should work without global', () => {
        let user = { name: 'test' };
        should(user).have.property('name', 'test');
    });
});

//////
mocha ./index.js

try global
    √ should work with global
    √ should work without global


2 passing (11ms)

我修复了您的代码中的错字(例如,从)describe函数中删除了额外的it),并且该代码在与mocha ./index.js一起运行时效果很好。确保已将mochanpm i -g mocha一起安装,以使模块在CLI中可用。