NodeJS中axios和supertest的区别

699*_*tam 10 node.js supertest axios

Axios 和 Supertest 都可以向服务器发送 HTTP 请求。但为什么用Supertest来测试,而用axios来练习API调用呢?

jon*_*rpe 23

使用Supertest而不是像 Axios(或 Supertest 所包装的 Superagent)这样的普通请求库有两个原因:

  1. 它为您管理启动和绑定应用程序,使其可以接收请求:

    您可以传递http.Server, 或Functionto request()- 如果服务器尚未侦听连接,那么它会为您绑定到临时端口,因此无需跟踪端口。

    如果没有这个,您必须启动应用程序并自行设置端口。

  2. 它添加了expect方法,该方法允许您对响应做出许多常见的断言,而不必自己写出来。例如,而不是:

    // manage starting the app somehow...
    
    axios(whereAppIs + "/endpoint")
      .then((res) => {
        expect(res.statusCode).toBe(200);
      });
    
    Run Code Online (Sandbox Code Playgroud)

    你可以写:

    request(app)
      .get("/endpoint")
      .expect(200);
    
    Run Code Online (Sandbox Code Playgroud)

  • 我看到 axios 的第一个例子更干净、更容易理解。当你用英语说“我期望响应状态为 200”时,它比你说“我期望 200”干净得多,那么 200 是什么意思呢? (2认同)