推荐答案
在 Express 中,测试路由可以通过多种方式进行。以下是使用 supertest 库进行测试的推荐方法:
// 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 是一个专门用于测试 HTTP 请求的库,它可以与 Express 应用无缝集成。通过 supertest,你可以模拟 HTTP 请求并验证响应。
2. 测试步骤
- 引入依赖:首先需要引入
supertest和express模块。 - 创建 Express 应用:定义一个简单的 Express 应用,并添加一个路由
/user,该路由返回一个 JSON 对象。 - 编写测试用例:使用
describe和it来定义测试用例。在it块中,使用request(app)来发起请求,并通过.expect方法来验证响应的状态码、内容类型和内容。
3. 关键点
request(app):supertest的request函数接受一个 Express 应用实例作为参数,并返回一个可以发起 HTTP 请求的对象。.expect:用于验证响应的状态码、内容类型和内容。可以链式调用多个.expect来验证多个条件。done:在异步测试中,done是一个回调函数,用于通知测试框架测试已完成。
4. 其他测试方法
除了 supertest,你还可以使用其他测试工具如 mocha、chai 等来测试 Express 路由。这些工具提供了更多的断言和测试组织方式,但 supertest 是最直接和常用的工具之一。
通过这种方式,你可以确保你的 Express 路由在各种情况下都能正确响应。