Express.js 中使用 Jest 进行单元测试的流程详解

Express.js 是一款流行的 Node.js 框架,它允许开发人员构建高性能且可扩展的应用程序。而 Jest 是一个可爱的 JavaScript 测试框架,能够让我们轻松地编写和运行各种类型的测试,包括单元测试和集成测试。在这篇文章中,我们将探讨如何在 Express.js 中使用 Jest 进行单元测试,以帮助开发人员提高代码质量并发现隐藏的问题。

步骤 1:安装依赖

首先,我们需要安装 Express.js 和 Jest 的依赖。在命令行中运行以下命令:

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

这会将 Express.js、Jest 和 supertest 这三个库作为开发依赖项安装到我们的项目中。

步骤 2:编写测试用例

接下来,我们需要编写我们的第一个测试用例。在项目根目录中创建一个名为 app.test.js 的文件,并添加以下代码:

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

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

首先我们导入了 supertest 库来模拟 HTTP 请求,然后导入了我们的 Express.js 应用程序。接下来,定义了一个测试套件来描述我们的测试场景:当我们访问 URL / 时,我们应该收到一个返回状态代码为 200 的 HTTP 响应。

在测试套件里,我们定义了一个测试用例,使用 supertest 发送一个 GET 请求到根路径(/),并期望得到一个 200 OK 的 HTTP 响应。

完成后,我们可以运行上述测试用例。在命令行中,运行以下命令:

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

可以看到测试用例运行成功,并且我们收到了我们所期望的响应。

步骤 3:测试其他端点

我们除了测试根路径以外,还需要测试其他端点,比如 /users 端点。我们来看看如何测试这个端点。在 app.test.js 文件中添加以下代码:

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

我们在测试套件中定义了一个 GET /users 的测试用例来验证用户数据是否返回了一个数组。在测试用例中,我们发起了一个请求到 /users 端点并得到响应。使用 Jest 的 expect 函数对响应体进行断言,是不是一个数组。这个测试用例已经足够覆盖我们的 /users 端点了。

步骤 4:代码覆盖率

Jest 还可以帮助我们生成代码覆盖率报告,以便我们了解我们的测试用例覆盖了多少代码。

package.json 文件中的 "scripts" 对象中添加以下命令:

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

这会在我们运行测试时,生成代码覆盖率报告。现在,运行 npm test 命令看看它是否工作正常。

在命令行中,运行 npm test 命令,然后查看生成的 coverage 文件夹中的 HTML 文件。这将打开一个可视化的报告,以便我们了解我们的测试用例覆盖了多少代码,并可以查看测试用例是否被覆盖到。

结论

在这篇文章中,我们了解了如何在 Express.js 中使用 Jest 进行单元测试。从安装依赖到编写测试用例和生成代码覆盖率报告,我们都完成了。这些步骤有助于开发人员在写代码的同时,发现和解决潜在的 bugs,提高代码的质量和可靠性。

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