Node.js 是一个非常流行的后端开发语言,同时也是一个流行的 Web 开发框架。在 Node.js 中实现的应用程序可以通过 REST API 进行通讯,这种方式通常用于将客户端和服务器端分离。
API 测试是确保应用程序质量的一个关键组成部分,例如它的功能是否正常、是否正确响应错误,并保持可维护性和稳定性。本文将介绍 Chai-Http 插件的使用,它是一个底层库,用于实现 Node.js 的 API 测试。
Chai-Http 简介
Chai-Http 是一个基于 Node.js 的 HTTP 库,它是 Chai 插件的一部分。Chai-Http 被广泛用于 Node.js 的单元测试和集成测试中,目的是测试 HTTP 请求的方法和断言响应的状态、响应体以及 header。
Chai-Http 的主要特点包括:
- 简单易用:其 API 非常直观,使用起来非常简单。
- 高扩展性:使用 Chai-Http 拓展测试套件非常容易。
- 可复用性:Chai-Http 支持浏览器和服务器端的测试,允许在所有支持 JavaScript 的平台上运行代码。
在本教程中,我们将使用 Chai-Http 进行 Node.js API 测试。
安装 Chai-Http
在开始使用 Chai-Http 进行 API 测试之前,我们需要在项目中安装 Chai-Http 依赖。
在终端中,首先进入项目所在的目录,然后使用以下命令安装 Chai-Http:
npm install chai-http --save-dev
安装完成后,我们需要在项目中引入 Chai-Http。打开 test.js
文件并输入以下代码:
const chai = require("chai"); const chaiHttp = require("chai-http"); chai.use(chaiHttp); const expect = chai.expect;
以上代码首先引入了 chai
和 chai-http
库并配置了 chai
的 use
方法。然后,我们通过 chaiHttp
引入了 chai-http
库,最后我们使用 expect
引入了断言库。
发起 API 请求
现在,让我们学习如何使用 Chai-Http 发起 API 请求。我们将使用 Node.js 的 http
模块,建立一个 Node.js 服务器。
在 app.js
文件中输入以下代码:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ----------------------- ---- -- - ------------------ - --------------- ------------ --- ---------------- --------- ---------- --- ------------------- -- -- ------------------- ------- -- ---- --------
以上代码创建了一个 HTTP 服务器,该服务器监听端口3000上的请求,并返回一个“Hello World!”消息。
我们将在 test.js
文件中创建一个测试文件,测试服务器是否能够响应请求。在 test.js
文件中,输入以下代码:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- -------- - --------------------- ------------------- ----- ------ - ------------ ----- --- - ----------------- ------------- ------ -- -- - ---------- ------ ----- ------- ------ -- - ---- ------------- --------- ---------- ---- -- - -------------------------------- --------- ------- --- --- ---
chai.request()
方法接受一个 HTTP 服务器对象作为参数,然后我们可以使用支持的 Method 之一来发出请求。请求后会回调包含响应的回调函数。我们可以使用 Chai 风格的断言来判断响应应该为什么。
现在,我们已经完成了 api 的响应测试,我们再来考虑其它测试场景。
使用 Chai-Http 发送 POST 请求
我们可以使用 Chai-Http 发送 POST 请求来测试我们的 API 是否在预期的时间内正确地响应。
在 app.js
文件中,我们修改已有服务器,来使用中间件处理 HTTP POST请求:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------- - ------------------- ----- ---------- - ----------------------- ----- --- - ---------- ------------------------------- --------- ----- ---- --------------------------- ------------------ ----- ---- -- - ----- - ---- - - --------- ---------- -------- ------ -------- --- --- ------------- ---- ----- -- - ------------------------- -------- --- ----- ------ - ----------------------- -------------------- ------------------- ------- -- ------------------------
以上代码使用了 body-parser
中间件,从 HTTP POST 请求的正文中解析 JSON 数据,然后发送回一个字符串。
现在,我们可以使用 Chai-Http 和断言库测试 API 是否正确响应 POST 请求。在 test.js
文件中,输入以下代码:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- -------- - --------------------- ------------------- ----- ------ - ------------ ----- --- - ----------------- ------------- ------ -- -- - ---------- ------ ----- ------- ------ -- - ---- ------------- --------- ---------- ---- -- - -------------------------------- --------- ------- --- --- ---------- ------ ------ ----- ---- --- ---- -- ------ ------ -- - ---- ------------- --------------- ------- ----- ------ -- ---------- ---- -- - ----------------------- -------------------------------- ------------------------------------ ---------------------------------------- ------- ------- --- --- ---
在这个测试中,我们使用了 send()
方法添加一个用JSON格式编写的数据到 POST 请求中,并断言响应是否为一个 JSON 对象,并且是否有一个正确的消息文本。
总结
在本文中,我们学习了如何使用 Chai-Http 框架测试 Node.js API。我们了解了Chai-Http 的基础知识及其特征,并编写了一个简单的程序来使用这个模块。最终我们熟悉了使用 Chai-Http 发送 HTTP POST 请求,并构造相应断言。如有任何疑问,欢迎留言!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646b0c2a968c7c53b0a7d5df