【发布时间】:2016-06-05 20:57:04
【问题描述】:
例如,我必须在不能(或不应该)随响应一起发送的验收测试中测试服务器错误(Express)
错误:发送后无法设置标头。
使用错误处理程序捕获错误并使用 5XX 代码响应将在此处提供有价值的反馈,但问题是标头已经发送。
这类错误可能不重要且难以发现,通常可以从日志中发现。
规格是
it('should send 200', function (done) {
request(app).get('/').expect(200, done);
});
测试的应用是
app.get('/', function (req, res, next) {
res.sendStatus(200);
next();
});
app.use(function (req, res) {
res.sendStatus(200);
});
在类似情况下,Express app 实例和请求测试库(即 Supertest)之间最合适的通信方式是什么?
问题不仅限于 Supertest。如果有包能解决超测不能解决的问题,也可以考虑。
【问题讨论】:
-
res.status(500).send()怎么样 -
@WalkerRandolphSmith 第一个 res.sendStatus 已经发送了标头,这将导致另一个“发送后无法设置标头”错误。
-
啊,我想我现在明白了。
-
我没有收到
Can't set headers after they are sent错误。 -
@KlwntSingh 当然。问题是如何在测试中发现这类问题。您需要了解问题才能解决问题。
标签: node.js express testing mocha.js supertest