猿问

非导出函数的 Mocha 单元测试返回“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 is not defined


// 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);

    })

  })


天涯尽头无女友
浏览 89回答 1
1回答

RISEBY

你不能直接访问isParamValid这里。尝试通过集成对其进行测试,如下所示const settings = require('./settings.js'); // No need of rewiredescribe('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);    })})
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答