node.js功能测试范围与其模块范围

时间:2019-12-17 13:29:38

标签: javascript testing mocha

考虑以下代码段与“追溯”创建的测试(即在实际编写和部署代码之后):

我们要测试的模块(file.js):

const config = require('./../config');

module.exports = {
    checkFeatureFlagInternal(flagName) {
        return config.featureFlags[flagName]
    }

测试是(test.js):

const envHelpers = require('./../helpers/env-helper');

function getMockFF() {
    return {
        featureFlags: {
            trueFF: true,
            falseFF: false,
        }
    };
}

let config;

// eslint-disable-next-line no-undef
describe('env-helper #checkFeatureFlagInternal()', function() {

    before(() => {
        config = getMockFF();
    });

    it('Shall return true for existing true feature flag', function() {
        expect(envHelpers.checkFeatureFlagInternal('trueFF')).to.be.true;
    });
});

在测试执行期间,当在checkFeatureFlagInternal内部调用test.js时,config变量取自file.js,而不是test.js的模拟变量。所以问题是:

  • 此问题是否表示参数范围太窄,实际签名看起来像(flagName, configToCheck): boolean而不是(flagName): boolean,以使其无法针对模拟配置进行测试?
  • 绕过此问题的首选方法,也是技术上最正确的方法?
  • 我要添加mocha标签,因为它的context对象可能适合使用吗?

0 个答案:

没有答案