Node.js chai和mocha显示错误后测试成功
我正在使用chai和mocha测试我在NodeJS中用typescript开发的restapi。我已经用mockgoose库编写了模拟mongodb的测试用例。当我运行第一个测试用例时,它成功地在数据库中添加了一些数据,但当我运行第二个和第三个测试用例时,它首先显示Node.js chai和mocha显示错误后测试成功,node.js,typescript,mocha.js,chai,Node.js,Typescript,Mocha.js,Chai,我正在使用chai和mocha测试我在NodeJS中用typescript开发的restapi。我已经用mockgoose库编写了模拟mongodb的测试用例。当我运行第一个测试用例时,它成功地在数据库中添加了一些数据,但当我运行第二个和第三个测试用例时,它首先显示发送到客户机后无法设置头,然后显示测试通过。我不明白这个执行工作流是怎么发生的。谁能解释一下吗。 我的测试用例文件如下所示: process.env.NODE_ENV = 'TEST'; import { expect } from
发送到客户机后无法设置头,然后显示测试通过。我不明白这个执行工作流是怎么发生的。谁能解释一下吗。
我的测试用例文件如下所示:
process.env.NODE_ENV = 'TEST';
import { expect } from 'chai';
import request from 'supertest';
import app from '../app';
import * as mongodb from '../mongo/connection';
describe('Testing the API', () => {
before((done) => {
mongodb.connectMock()
.then(() => done())
.catch((err:any) => done(err))
})
it('OK, adding new employee', (done) => {
request(app).put('/add')
.send(<some JSON data>)
.then(res => {
...some matcher
done();
})
.catch(err => done(err));
})
it('OK, getting all employees', (done) => {
request(app).get('/all')
.then(res => {
...some matcher
done();
})
.catch(err => {
done(err)
});
})
it('OK, getting employee by ID', (done) => {
request(app)
.get(`/create/${id}`)
.then(res => {
...some matcher
done();
})
.catch(err => done(err));
})
})
您的问题似乎是您的,如果您的两条路线中res.status(200)
或res.status(400)
的条件都有问题
if(employee.length > 0)
res.status(200).json(employee);
console.log(`No employee with employee ID: ${employeeId} found`);
res.status(404).json({ error: 'No employee found', employee: employee });
应该是和if(){}else{}
,因为您正在尝试再次发送/更改响应以及已经发送的200个响应
if(employee.length > 0) {
res.status(200).json(employee);
} else {
console.log(`No employee with employee ID: ${employeeId} found`);
res.status(404).json({ error: 'No employee found', employee: employee });
}
if(employee.length > 0)
res.status(200).json(employee);
console.log(`No employee with employee ID: ${employeeId} found`);
res.status(404).json({ error: 'No employee found', employee: employee });
if(employee.length > 0) {
res.status(200).json(employee);
} else {
console.log(`No employee with employee ID: ${employeeId} found`);
res.status(404).json({ error: 'No employee found', employee: employee });
}