考虑以下代码段与“追溯”创建的测试(即在实际编写和部署代码之后):
我们要测试的模块(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
对象可能适合使用吗?