对非导出函数的摩卡单元测试返回"xx 不是函数"



我正试图使用mocha对一个未导出的函数进行单元测试,但它给出了一个错误"xx不是函数"。示例结构类似于ff代码,其中我想测试函数isParamValid。settings.js中的代码格式已经存在于我们的系统中,所以我无法重构它。

// settings.js
const settings = (() => {
const isParamValid = (a, b) => {
// process here
}
const getSettings = (paramA, paramB) => {
isParamValid(paramA, paramB);
}

return {
getSettings,
}
})();
module.exports = settings;

我已经尝试过ff代码来测试它,但mocha给出了错误ReferenceError:isParamValid没有定义

// settings.test.js
const settings= rewire('./settings.js');
describe('isParamValid', () => {
it('should validate param', () => {
let demo = settings.__get__('isParamValid');
expect(demo(0, 1)).to.equal(true);
expect(demo(1, 0)).to.equal(true);
expect(demo(1, 1)).to.equal(false);
})
})

此处不能直接访问isParamValid。尝试通过以下集成进行测试

const settings = require('./settings.js'); // No need of rewire
describe('isParamValid', () => {
it('should validate param', () => {
const demo = settings.getSettings; // Read it from getSettings
expect(demo(0, 1)).to.equal(true);
expect(demo(1, 0)).to.equal(true);
expect(demo(1, 1)).to.equal(false);
})
})

相关内容

  • 没有找到相关文章

最新更新