我正在尝试测试一种方法,该方法包含对全局变量的引用,该全局变量包含从 json 文件中获取的一些配置。
async function methodToTest(var1, var2, var3) {
const functionName = 'methodToTest';
//guards here
try {
if ((var1 === 0 || var2 === 0 || var3 < config.prop1.pro1_child) {
return false;
}
return true;
}
这是它的测试,作为 serviceConfig 所需的配置 json 文件:
const rewire = require('rewire');
const fileToBeTested = rewire(`${ __base }methods/fileContainingMethodToTest`);
describe('Testing methodToTest', function () {
it('Should return false if var1 = 0 or var2 = 0 or var3 < configured value', async function () {
const var1 = '0';
const var2 = '1';
const var3 = '400';
const expectedResponse = false;
//Create a stub for the configs file
configStub = sinon.stub(serviceConfig, 'config').resolves(serviceConfig)
const result = await fileToBeTested.methodToTest(var1, var2, var3);
expect(result).to.be.equal(expectedResponse);
});
}
这是 conf.json 文件,它在需要测试的方法中“提供”配置变量:
{
"p1":"test1",
"p2":"test2",
"prop1": { "pro1_child": "2000" }
...
}
但我明白TypeError: Cannot stub non-existent own property config
了我做错了什么?
这些是我正在使用的模块:
"mocha": "^5.0.5",
"rewire": "^4.0.1",
"sinon": "^4.5.0",
"chai": "^4.2.0",
"chai-as-promised": "^7.1.1"