如何测试内部函数

How to test an internal function

我正在尝试创建一个单元测试来覆盖内部函数

fileA.js

module.exports.functionA = () {
  
  const functionB = () {
    // do something
  }

  functionB()
}

test.js

const { functionA } = require('fileA')

...

it('runs functionB', () => {
  functionA()
  expect(...).toHaveBeenCalled()
}

如何访问它?

这里有两种可能(你的情况看起来像第一种,但为了问题的目的也明显简化了)。

或者:

  • functionB 完全是 functionA 私有的,是其实现的一部分,这意味着您无法访问它来(直接)测试它。相反,测试 functionA,它可能使用 functionB 作为它所做工作的一部分(否则,functionA 中的完全私有函数没有意义)。

  • functionA 以某种方式公开 functionB(例如,作为 return 值,或作为 returned 对象上的方法,或通过将其设置在传入的对象上等),在这种情况下,您可以通过 functionA 提供的任何方式获取它,然后对其进行测试。

(同样,我认为你的是第一种情况。)