假设有一个函数,在其他任务中,使用 axios 进行一些 api 调用。有没有办法在测试此功能时模拟所有 axios api 调用并根据输入指定调用的返回值。例如,假设您要测试的功能是这样的:
function someFunction (a, b, c) {
const apiReturnA = axiosApiCall(a)
const returnB = b + 1
const apiReturnC = axiosApiCall(c)
return [apiReturnA, returnB, apiReturnC]
}
我想测试 someFunction
并指定,每次 axiosApiCall
被调用时,不执行函数,只是根据输入返回一个值这个功能。如何做到这一点?
最佳答案
您可以通过闭包注入(inject) axiosApiCall
:
function apiWrapper(axiosApiCall) {
return function someFunction (a, b, c) {
const apiReturnA = axiosApiCall(a)
const returnB = b + 1
const apiReturnC = axiosApiCall(c)
return [apiReturnA, returnB, apiReturnC]
}
}
const testApiCall = function(input) {
return input * 2;
}
let someFunction = apiWrapper(testApiCall);
console.log(someFunction(1,2,3));
然后在您的真实代码中,您只需传入真实的 axiosApiCall
关于javascript - 如何模拟 axios api 调用以根据输入返回不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59075279/