推荐答案
// www.javascriptcn.com code example
const chai = require('chai');
const chaiHttp = require('chai-http');
const app = require('../app'); // 导入你的 Express 应用
const expect = chai.expect;
chai.use(chaiHttp);
describe('GET /api/users', () => {
it('应该返回所有用户', (done) => {
chai.request(app)
.get('/api/users')
.end((err, res) => {
expect(res).to.have.status(200);
expect(res.body).to.be.an('array');
done();
});
});
});
describe('POST /api/users', () => {
it('应该创建一个新用户', (done) => {
const newUser = { name: 'John Doe', email: 'john@example.com' };
chai.request(app)
.post('/api/users')
.send(newUser)
.end((err, res) => {
expect(res).to.have.status(201);
expect(res.body).to.have.property('id');
expect(res.body.name).to.equal(newUser.name);
expect(res.body.email).to.equal(newUser.email);
done();
});
});
});本题详细解读
1. 安装依赖
首先,你需要安装 mocha 和 chai 以及 chai-http 来进行测试。
npm install mocha chai chai-http --save-dev
2. 导入模块
在测试文件中,你需要导入 chai 和 chai-http,并配置 chai 使用 chai-http。
const chai = require('chai');
const chaiHttp = require('chai-http');
const app = require('../app'); // 导入你的 Express 应用
const expect = chai.expect;
chai.use(chaiHttp);3. 编写测试用例
使用 describe 和 it 来组织测试用例。describe 用于描述一组相关的测试,it 用于描述单个测试用例。
- GET 请求测试:测试
/api/users路由是否返回所有用户。 - POST 请求测试:测试
/api/users路由是否能够成功创建新用户。
4. 使用 chai.request 发起请求
chai.request(app) 用于发起 HTTP 请求。你可以使用 .get()、.post() 等方法来指定请求类型,并使用 .send() 来发送请求体。
5. 断言响应
使用 expect 来断言响应的状态码、响应体等是否符合预期。
6. 异步测试
由于 HTTP 请求是异步的,测试用例需要使用 done 回调来通知 Mocha 测试已完成。
7. 运行测试
在 package.json 中添加测试脚本:
"scripts": {
"test": "mocha"
}然后运行测试:
npm test
通过以上步骤,你可以使用 Mocha 和 Chai 对 Express 应用进行全面的测试。