在开发现代 Web 应用程序时,开发人员需要确保其应用程序的每个组件都可以正常工作,以便用户能够正确地使用它们。其中之一是能够针对应用程序的 API 进行测试。 这种测试通常被称为“接口测试”,是为了确保应用程序的 API 返回正确的响应,在这篇文章中,我们将探索如何使用 Chai.js 和 Mocha.js 对 Express 服务器进行 API 测试。
Chai.js 与 Mocha.js 简介
Chai.js 是一个流行的 JavaScript 断言库,它增强了 Node.js 测试的可读性。它提供了各种易于使用的断言函数,例如 assert,expect 和 should。
Mocha.js 是一个流行的 JavaScript 测试框架,用于编写可读性强、灵活且易于维护的测试。
在本文中,我们将使用 Chai.js 和 Mocha.js 来编写 API 测试,使用 Express 框架作为我们的服务器。
执行测试前的准备工作
为了开始测试,在设置 Express 服务器之前,我们需要安装一些必要的依赖项。 确保您已经将以下依赖项添加到 package.json
文件中。
-- -------------------- ---- ------- - --------------- - -------------- ---- ------- ---- ---------- ---- -------- ---- ------------ --- - -
以上依赖包含了 Express,body-parser,Supertest(用于测试 Express 应用程序),以及 Mocha 和 Chai。
API 测试
考虑以下的基本 Express 应用程序,其中包含两个简单的 API 路径:/signin 和 /signup。
-- -------------------- ---- ------- ----- ------- - ------------------ ----- --- - --------- ----- ----- - -- ----------------------- ------------------- ----- ---- -- - ----- - --------- -------- - - -------- ----- ---- - - --------- -------- - ---------------- ---------------------- -------- ----- ------- ------------- -- -- ------------------- ----- ---- -- - ----- - --------- -------- - - -------- ----- ---- - ----------- --- -- ---------- --- -------- -- ---------- --- -------- - -- ------- - ---------------------- -------- -------- ------------ -- - ---------------------- -------- ------ ----------- -- -- -------------- - ---
该应用程序在收到有效的 POST 请求时,将添加一个新的用户,请求具有不同的参数,具体取决于其路径。 如果该路径为 /signup,则 name 和 password 属性将包含在有效的请求体中,如果该路径为 /signin,则 name 和 password 将从有效的请求体中获取。
我们将基于这个应用程序来编写测试。
编写测试用例
为了执行 API 测试,我们将需要创建一个测试文件 app.test.js
,将写入以下代码块:
-- -------------------- ---- ------- ----- --- - ---------------- ----- ------- - ------------------------- ----- - ------ - - --------------- ------------- ------- -- -- - ---------- ------ - --- ---- -- ------- ------ ------ -- - ------- ---------------- ------- --------- ----------- --------- ------ -- ------------ ---------- ---- -- - --------------------------------------- ------- -------------- -- ----- ------ --------- ------ -- -- ---------- --- -- -- -------- ---- -- ------- ------ ------ -- - ------- ---------------- ------- --------- ----------- --------- ------ -- ------------ ---------- ---- -- - ---------------------------------------- ------------ -- ----- ------ --------- ------ -- -- ---------- ----- -- ----- -- ------- ---- ---- ------- ------------- ------ -- - ------- ---------------- ------- --------- ----------- --------- ---------------- -- ------------ ---------- ---- -- - ------------------------------------------ ------------- -- ----- ------ --------- ------ -- -- --
在上面的代码中,describe()
函数是一个容器块,其中测试用例被组合到块中。这样做是为了覆盖应用程序中的不同路径,同时维护测试的整洁和互相独立。
每个测试用例都是由 it()
函数定义的。在这里,我们将定义三个测试用例,以检查应用程序是否管用。每个测试用例都采用 superagent
的 request()
函数来创建服务器上的 HTTP 请求。原始请求对象可以用 .send()
方法来添加 JSON 负载到请求消息中。
我们可以使用断言来验证响应体,例如 .expect(201)
,其中 .expect()
用于验证 HTTP 响应代码,if(err) return done(err)
用于处理我们的测试,并在请求失败时返回给浆状体获取 more details.。
总结
使用 Mocha 和 Chai 是针对 Node.js 应用程序进行测试的一种流行方法。它们可以帮助我们编写可读性强,易于维护和扩展的测试用例。在本文中,我们了解了如何使用这些库测试 Express.js 应用程序的不同 API 路径。从这个例子中,我们可以看到,测试代码容易阅读和理解,并且可以帮助我们避免在将应用程序推送到生产环境之前发现潜在的错误,这样可以从目前开发的现有错误中受益,并为未来的改进设定基线。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6517c95d95b1f8cacdff1300