Node.js chai和mocha显示错误后测试成功

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

我正在使用chai和mocha测试我在NodeJS中用typescript开发的restapi。我已经用mockgoose库编写了模拟mongodb的测试用例。当我运行第一个测试用例时,它成功地在数据库中添加了一些数据,但当我运行第二个和第三个测试用例时,它首先显示
发送到客户机后无法设置头,然后显示测试通过。我不明白这个执行工作流是怎么发生的。谁能解释一下吗。
我的测试用例文件如下所示:

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 });
}