gpt4 book ai didi

node.js - 使用 Mocha 和 Supertest 测试 Express 错误

转载 作者:IT老高 更新时间:2023-10-28 23:17:39 26 4
gpt4 key购买 nike

例如,我必须在无法(或不应该)随响应一起发送的验收测试中测试服务器错误(Express)

Error: Can't set headers after they are sent.

使用错误处理程序捕获错误并使用 5XX 代码响应将在此处提供有值(value)的反馈,但问题是 header 已经发送。

这类错误可能是非关键且难以发现的,通常它们是从日志中找出来的。

规范是

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()

作为 express documentation说出来

Sets the HTTP status for the response. It is a chainable alias of Node’s response.statusCode.

恕我直言,如果您想在 end-to-end (E2E) 测试工具(如 supertest(或 Selenium)你必须处理快速错误并发送正确的输出(500 状态错误,一些消息......)以允许检测它。

或者使用 unit test , 使用 chai 测试 Controller 函数不会抛出任何错误或原生断言。

关于node.js - 使用 Mocha 和 Supertest 测试 Express 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35587415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com