我想测试一个axios post调用,它应该使用"ECONNREFUSED"如果服务器没有运行
const promise= axios.post("/path/under/test", {"some":"data"});
await expect(promise).rejects.toThrowError("ECONNREFUSED");
不幸的是,错误包含一个非常通用的"网络错误"。测试中的消息。我可以在控制台输出中看到"some where"预期代码"ECONNREFUSED"是根错误的一部分。但是如何获得错误代码呢?
这就是" stringyfield "错误如下:
{"message":"Network Error","name":"Error","stack":"[...]"
原因
简化消息"网络错误";之所以显示,是因为Axios在测试期间假设它在浏览器中运行。出于安全考虑,所有与I/O相关的错误都简化为此消息,只有当Axios假设在Node中运行时才有可能区分特定的错误。
<<p>解决方案/strong>在测试文件中导入以下代码时,将包含所有错误代码。它使Axios假定在Node中运行。这也有助于避免CORS问题。
axios.defaults.adapter = require("axios/lib/adapters/http");