Axios出现Network Error时如何获取ECONNREFUSED等底层错误码
Axios会对底层网络错误做一层封装,所有连接异常类的错误都会被统一包装为message为Network Error的错误实例,你需要的ECONNREFUSED错误码存储在Axios抛出的错误实例的code属性中,直接匹配顶层message是拿不到目标内容的。
可用的测试写法
1. 链式匹配写法(适配Jest/Vitest等主流测试框架,代码最简洁)
const promise = axios.post("/path/under/test", {"some":"data"}); await expect(promise).rejects.toMatchObject({ code: "ECONNREFUSED" });
2. 显式捕获写法(适配所有测试框架,支持更复杂的校验逻辑)
try { await axios.post("/path/under/test", {"some":"data"}); // 请求未抛出错误不符合预期,直接标记测试失败 expect(true).toBe(false); } catch (err) { expect(err.code).toBe("ECONNREFUSED"); }
如果需要获取更底层的错误信息,可以访问err.cause属性,这里存储的是Node.js/浏览器原生抛出的未被Axios包装的根错误对象,同样可以找到ECONNREFUSED的错误标识。
内容的提问来源于stack exchange,提问作者Chriss
相关产品推荐
相关产品推荐

