使用jestjs模拟另一个函数的内部函数
尝试使用jest模拟内部函数,但未能实现,原始函数如下使用jestjs模拟另一个函数的内部函数,jestjs,Jestjs,尝试使用jest模拟内部函数,但未能实现,原始函数如下 function a(param1, param2, callback){ let handleResponse = (err, result, fresh) { console.log(result) } redis.cache.get('cacheKey', data => { if(data !== null){ handleResponse(null, dat
function a(param1, param2, callback){
let handleResponse = (err, result, fresh) {
console.log(result)
}
redis.cache.get('cacheKey', data => {
if(data !== null){
handleResponse(null, data, false)
}else{
callApi()
}
}
}
根据上述函数,我们可以确定是否调用了HandlerResponse
我的解决方法如下
describe('someFunction', () => {
it('should call handleResponse if no cache value', () => {
redis.cache.get = jest.fn().mockImplementation((mockCacheKey, callback) =>
callback('mock_data'));
expect(handleResponse).toBeCalled();
});
});
由于
handleResponse
函数是在a
函数中声明的,因此没有直接测试该函数的简单方法
如果您可以更改代码,那么您可以:
a
之外声明handleResponse
a
控制台上spy
。log
并查看它是否被调用
constspy=jest.spyOn(控制台,'log');
//您的测试代码在这里
期望(间谍)。已被调用();
嵌套函数是一个实现细节,请测试其行为。在这种情况下:是否记录结果?