说一个人具有一项功能,除其他任务外,该功能使用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时都不要执行该函数,只需根据此函数的输入返回一个值。一个人怎么能做到呢?

最佳答案

您可以通过闭包注入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

10-06 14:43