如何测试内部函数
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
提供的任何方式获取它,然后对其进行测试。
(同样,我认为你的是第一种情况。)
我正在尝试创建一个单元测试来覆盖内部函数
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
提供的任何方式获取它,然后对其进行测试。
(同样,我认为你的是第一种情况。)