我有一个文件可以导出一个依赖于私有函数的函数:
function __a(filePath, someFunction){
// do some file request
someFunction(filePath)
}
function b(filePath){
__a(filePath, require)
}
module.exports = {
b: b
}
我想测试一下私有函数__a
toHaveBeenCalledWith
的一些参数,以便__a
实际上并未尝试获取某些我不能保证存在的文件。
我了解这样的概念:导入b
时会得到对该函数的引用,而__a
只是存在于该函数的范围内,因此我无法访问它使用类似的东西:
import appResources from './index';
// ... test
jest.spyOn(applicationResources, '__a').mockImplementationOnce(myParams);
如何避免此处发生__a
行刑并确保已被执行?
答案 0 :(得分:2)
不可能模拟或监视未用作方法的现有函数。
__a
和b
应该驻留在不同的模块中,或者a
应该用作同一模块中的方法。对于CommonJS模块,可以使用现有的exports
对象:
exports.__a = function __a(filePath, someFunction){
// do some file request
someFunction(filePath)
}
exports.b = function b(filePath){
exports.__a(filePath, require)
}
请注意,module.exports
未被替换,否则将无法将其称为exports
。