0

我正在尝试测试一种方法,该方法包含对全局变量的引用,该全局变量包含从 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"
4

1 回答 1

0

我最终发现,如果我定义了一个全局变量“config”,我可以继续测试。可以关闭

于 2020-10-29T16:24:25.350 回答