【问题标题】:How to mock an axios api call to return different values based on input?如何模拟 axios api 调用以根据输入返回不同的值?
【发布时间】:2020-03-23 07:25:31
【问题描述】:

假设有一个函数,在其他任务中,使用 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 时,不要执行该函数,只需根据该函数的输入返回一个值。怎么可能做到这一点?

【问题讨论】:

    标签: javascript testing mocking jestjs axios


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 2022-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多