在前端开发中,我们经常需要对后端 API 进行测试。而 Supertest 是一个优秀的 Node.js 模块,可以帮助我们进行 HTTP 请求的测试。在本文中,我们将介绍如何在 Mocha 中使用 Supertest 进行 HTTP 测试,以及一些常见的测试用例。
准备工作
在开始之前,需要确保我们已经安装了以下工具:
- Node.js
- Mocha
- Supertest
如果还没有安装,可以通过以下命令进行安装:
npm install -g mocha npm install supertest --save-dev
编写测试用例
首先,我们需要创建一个测试文件,例如 test.js
。在该文件中,我们需要引入 Mocha 和 Supertest 模块,并编写测试用例。
-- -------------------- ---- ------- ----- ------ - ------------------ ----- --- - ----------------- -- ----- ------- -- ----- ------- - -------------------------- ------------- ------- -------- -- - ---------- ------ --- --- --- --- -------- ------ - ---------------- ------------ ------------- ----- ---- - -- ----- ------ ---------- ------------------------------ ------ -------- ------- --- --- ---
在上面的代码中,我们首先引入了 assert
模块和我们的 Express 应用。然后,我们通过 request
函数创建了一个 Supertest 实例,并使用 describe
和 it
函数编写了一个测试用例。
在测试用例中,我们使用 request.get
发送一个 GET 请求,并使用 expect
函数断言返回的状态码为 200。最后,我们通过回调函数判断返回的消息是否为 'Hello World'
,如果是则测试通过。
运行测试
当我们完成了测试用例的编写后,就可以通过以下命令运行测试:
mocha test.js
如果测试通过,则会输出以下结果:
API Tests ✓ should return 200 for GET / 1 passing (20ms)
常见测试用例
除了上面的示例,还有许多常见的测试用例可以帮助我们更好地测试 API。
POST 请求
-- -------------------- ---- ------- ---------- ------ - --- ---- ---- ---- -------- -------- ------ - ---------------------- ------- ----- ----- ---- -- ------------ ------------- ----- ---- - -- ----- ------ ---------- --------------------------- ----- ------ ------- --- ---
在上面的测试用例中,我们使用 request.post
发送一个 POST 请求,并使用 send
函数发送一个 JSON 格式的请求体。然后,我们断言返回的状态码为 201,并判断返回的消息中是否包含我们发送的请求体。
PUT 请求
-- -------------------- ---- ------- ---------- ------ -- -------- ---- ---- --- ------------ -------- ------ - ----------------------- ------- ----- ----- ---- -- ------------ ------------- ----- ---- - -- ----- ------ ---------- --------------------------- ----- ------ ------- --- ---
在上面的测试用例中,我们使用 request.put
发送一个 PUT 请求,并使用 send
函数发送一个 JSON 格式的请求体。然后,我们断言返回的状态码为 200,并判断返回的消息中是否包含我们发送的请求体。
DELETE 请求
it('should delete an existing user with DELETE /users/:id', function (done) { request.delete('/users/1') .expect(204) .end(function (err, res) { if (err) return done(err); done(); }); });
在上面的测试用例中,我们使用 request.delete
发送一个 DELETE 请求。然后,我们断言返回的状态码为 204,表示删除成功。
结论
在本文中,我们介绍了如何在 Mocha 中使用 Supertest 进行 HTTP 测试,并提供了一些常见的测试用例。通过这些测试用例的学习,我们可以更好地测试我们的后端 API,提高代码质量。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67414d82d40a3cb159ea4d43