javascript - 如何模拟 axios api 调用以根据输入返回不同的值?

标签 javascript testing mocking jestjs axios

假设有一个函数,在其他任务中,使用 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/

相关文章:

javascript - Mysqli 查询从数据库中返回一行简单的字符串的空值

testing - TestCafe与 Electron : can't load main page (main page may return a '304' http code)

unit-testing - 在Go lang中一个接一个地多次模拟具有不同响应的相同功能

python - 单元测试(flask-restful)GET API 调用时出现 500 INTERNAL SERVER ERROR

javascript - 使用 EaselJS 调整可拖动填充的大小

Javascript 变量不会在循环外更新,在 OK 内

javascript - 从 Confluence 调用自定义 REST API

java - 我使用什么 URL 在 Web 浏览器中打开 String 对象

用 Material 编写的 Angular Testing 模板驱动形式

mocking - OpenAPI 3.0 模拟生成器