我正在尝试使用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');
});
});
答案 0 :(得分:1)
首先,I'm tired of writing "require"
是使用GLOBAL变量的最坏原因。使用require
是常规的处理方式,这是有原因的,它与必须在每个文件中import
或键入using
的任何其他语言没有什么不同。它只是使以后理解代码的作用变得更加容易。
有关更多说明,请参见this。
现在,这就是说,当需要should
时,该模块实际上将其自身附加到GLOBAL变量,并使describe
,it
和should
的访问方法可用。>
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
一起运行时效果很好。确保已将mocha
与npm i -g mocha
一起安装,以使模块在CLI中可用。