推荐答案
// www.javascriptcn.com code example
const request = require('supertest');
const express = require('express');
const app = express();
app.get('/user', function(req, res) {
res.status(200).json({ name: 'john' });
});
describe('GET /user', function() {
it('responds with json', function(done) {
request(app)
.get('/user')
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(200, { name: 'john' }, done);
});
});本题详细解读
1. 安装 Supertest
首先,你需要安装 supertest 和 express。你可以使用 npm 或 yarn 来安装它们:
npm install supertest express --save-dev
2. 创建 Express 应用
在测试之前,你需要创建一个 Express 应用。这个应用可以是一个简单的路由处理程序,比如上面的 /user 路由。
3. 编写测试用例
使用 supertest 来测试 Express 应用时,你需要编写一个测试用例。测试用例通常包含以下几个步骤:
- 创建请求:使用
request(app)来创建一个请求对象。 - 设置请求头:使用
.set()方法来设置请求头,比如Accept头。 - 发送请求:使用
.get()、.post()等方法来发送请求。 - 验证响应:使用
.expect()方法来验证响应的状态码、内容类型、响应体等。
4. 运行测试
你可以使用 mocha 或 jest 等测试框架来运行这些测试用例。例如,使用 mocha 运行测试:
mocha test.js
5. 异步处理
在测试中,done 是一个回调函数,用于通知测试框架测试已经完成。如果你使用的是 async/await,可以省略 done 并使用 async 函数。
it('responds with json', async function() {
await request(app)
.get('/user')
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(200, { name: 'john' });
});6. 其他注意事项
- 环境变量:确保在测试环境中正确配置了环境变量。
- 数据库连接:如果测试涉及到数据库操作,确保在测试前后正确管理数据库连接和状态。
- 错误处理:测试中应该包含对错误情况的处理,比如 404 或 500 错误。
通过以上步骤,你可以使用 supertest 对 Express 应用进行全面的测试。