推荐答案
-- -------------------- ---- ------- ----- ------- - --------------------- ----- --- - ------------------ -- ---- ------- --- ------ - ------------- ------------ -- -- - ---------- ------ - ---- -- ------- ----- -- -- - ----- --- - ----- ------------ ------------------ ------------- --------------------------------------- ------------------------------------------- --- ---
本题详细解读
1. 安装依赖
首先,你需要安装 supertest
和 jest
(或其他测试框架)来编写和运行测试。
npm install supertest jest --save-dev
2. 引入依赖
在测试文件中,引入 supertest
和你的 Express 应用。
const request = require('supertest'); const app = require('../app'); // 假设你的 Express 应用在 app.js 中
3. 编写测试用例
使用 describe
和 it
来组织你的测试用例。describe
用于分组,it
用于定义单个测试用例。
-- -------------------- ---- ------- ------------- ------------ -- -- - ---------- ------ - ---- -- ------- ----- -- -- - ----- --- - ----- ------------ ------------------ ------------- --------------------------------------- ------------------------------------------- --- ---
4. 运行测试
使用 jest
或其他测试框架来运行测试。
npx jest
5. 解释代码
request(app)
:创建一个supertest
请求对象,传入你的 Express 应用。.get('/api/users')
:发送一个 GET 请求到/api/users
路由。.expect(200)
:断言响应状态码为 200。expect(res.body).toBeInstanceOf(Array)
:断言响应体是一个数组。expect(res.body.length).toBeGreaterThan(0)
:断言数组长度大于 0。
6. 其他断言
你可以使用 supertest
提供的其他断言方法来验证响应头、响应体等。
.expect('Content-Type', /json/) .expect('Content-Length', '15')
7. 异步测试
由于 HTTP 请求是异步的,测试用例需要使用 async/await
来处理异步操作。
it('should return a list of users', async () => { const res = await request(app) .get('/api/users') .expect(200); expect(res.body).toBeInstanceOf(Array); });