在 Jest 中使用 supertest 测试 Express 应用

作为前端开发者,我们需要确保应用程序在正确性和质量方面达到最高标准。测试是一种确保代码质量和正确性的方法,它可以验证应用程序是否按照预期工作。

在这篇文章中,我们将探讨如何使用 Jest 和 supertest 进行快速、可靠的测试,以确保我们的 Express 应用程序的性能和正确性。

什么是 Jest 和 supertest?

Jest 是一个基于 JavaScript 的测试框架,它专门用于测试 React、Vue、Angular 等前端框架。它提供了一个简单的 API 和命令行界面,可以轻松地编写、运行和维护测试用例。

supertest 是一个基于 Node.js 的 HTTP 测试库,它允许我们使用断言和链式语法对应用程序进行测试,如同我们使用 jQuery 对 DOM 进行操作一样简单。

安装 Jest 和 supertest

首先,我们需要全局安装 Jest 和 supertest:

--- - -- ---- ---------

接下来,我们需要在项目目录中安装 Jest 和 supertest 的依赖项:

--- - -- ---- --------- ----------- ----------------

Express 应用程序的测试

在这个演示里,我们将使用以下简单的 Express 应用程序:

----- ------- - -------------------
----- --- - ----------

------------ ----- ---- -- -
  --------------- ---------
---

-------------- - ----

编写测试用例

首先,让我们编写一个基本的测试用例以确保我们的应用程序对根路由返回“Hello World!”:

----- ------- - ---------------------
----- --- - ------------------

------------- --- -- -- -
  ------------ ------ ------ --------- ----- -- -- -
    ----- -------- - ----- ----------------------
    ----------------------------------
    --------------------------------- ---------
  ---
---

以上测试用例包括以下步骤:

  1. 使用 supertest 创建一个请求,并使用 app 模块导出的 Express 应用程序。
  2. 使用 Jest 的 test() 函数来指定测试用例的名称和功能。
  3. 使用 supertest 的 get() 方法向根路径发送一个 GET 请求。
  4. 使用 Jest 的 expect() 函数来断言 HTTP 响应的状态码和响应体文本。

运行测试用例

在项目的根目录下,运行以下命令启动测试:

----

这将会运行所有测试用例并输出测试结果。

进一步测试 HTTP Endpoints

如果应用程序有多个 HTTP 端点,我们可以在 supertest 的链式语法中使用其他 HTTP 动词、请求主体或头、Cookies 等来测试他们。例如:

----- ------- - ---------------------
----- --- - ------------------

-------------- -------- -- -- -
  ------------ ------ - --- ----- ---- ---------- ------- ----- -- -- -
    ----- -------- - ----- ----------------------------------
      --------- -----------
      --------- -----------
    ---
    ----------------------------------
    ----------------------------------------------
  ---
---

------------- -------- -- -- -
  ------------ ------ - ---- -- ------- ----- -- -- -
    ----- -------- - ----- ------------
      --------------
      -------------- --------------------
    ----------------------------------
    ------------------------------------------------
  ---
---

以上测试用例包括以下步骤:

  1. 前一示例检查“/”端点对于 GET 请求是否返回“Hello World!”消息。此处POST /login端点需要进行身份验证并返回 JWT 令牌。
  2. 使用 supertest 的 send() 方法向 POST 请求中添加请求主体。
  3. 在 GET 请求中使用 supertest 的 set() 方法向请求头中添加 Cookie。

结论

通过 supertest 和 Jest 的结合使用,我们可以轻松地测试我们的应用程序和 API 端点,以确保其性能和正确性。我们在本文中提供了一些简单的示例,但 supertest 和 Jest 提供的功能,远远不止于此,加上你的丰富想象,你肯定能够使用该组合进行更多的测试。让我们尽可能使用测试是我们承诺向用户提供质量和规范的证明。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/671ba3c89babaf620facdb4b