You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jest中调用含axios请求的async函数始终返回undefined问题排查

问题根因

你的fetchUsernames函数虽然声明了async关键字,但没有显式返回axios.get产生的Promise对象,所以函数默认返回undefined,测试中await拿到的结果自然就是undefined。
axios.get本身返回的是Promise实例,你只调用了它却没有向外层返回这个实例,写在.then回调里的return usernames仅会作为Promise链的内部返回值,不会作为外层fetchUsernames函数的返回值。

修复方案

有两种修改方式可选:

  1. 利用async/await的写法简化代码,避免嵌套的.then回调,可读性更高:
export async function fetchUsernames() {
  const usernames = [];
  // 直接await接收axios返回结果
  const users = await axios.get("https://jsonplaceholder.typicode.com/users");
  for (let user of users.data) {
    usernames.push(user.username);
  }
  return usernames;
}
  1. 不想调整现有逻辑的话,直接在axios.get前加return,把Promise实例返回即可:
export async function fetchUsernames() {
  const usernames = [];
  // 新增return返回Promise
  return axios.get("https://jsonplaceholder.typicode.com/users").then((users) => {
    for (let user of users.data) {
      usernames.push(user.username);
    }
    return usernames;
  });
}

额外建议

你当前的测试是直接调用真实外网接口,依赖网络环境稳定性,建议在jest中mock掉axios模块,避免测试受网络影响,也能提升测试运行速度。

内容的提问来源于stack exchange,提问作者Szelmat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:36:03