使用Mocha和Supertest测试Express错误

Est*_*ask 11 testing mocha.js node.js express supertest

例如,我必须在验收测试中测试服务器错误(Express),这些错误不能(或不应该)与响应一起发送

错误:发送后无法设置标头.

使用错误处理程序捕获错误并使用5XX代码进行响应将在此处提供有价值的反馈,但问题是已经发送了标头.

这种错误可能是非关键的,很难发现,通常它们是从日志中找出来的.

规格是

it('should send 200', function (done) {
    request(app).get('/').expect(200, done);
});
Run Code Online (Sandbox Code Playgroud)

测试的应用程序是

app.get('/', function (req, res, next) {
    res.sendStatus(200);
    next();
});

app.use(function (req, res) {
    res.sendStatus(200);
});
Run Code Online (Sandbox Code Playgroud)

app在类似情况下,Express 实例和请求测试库(即Supertest)之间进行通信的最合适方式是什么?

问题不仅限于Supertest.如果有包可以解决Supertest无法解决的问题,也可以考虑它们.

Bra*_*ley -2

我使用 HAPI 而不是 Express 来完成此操作,但我解决了同样的问题。我使用外部库来进行调用(如请求承诺)并且它有效。捕获请求-承诺响应中的错误。