繁体   English   中英

使用supertest和Express JS测试下一个(错误)

[英]Testing for next(err) with supertest and Express JS

在Express中的路由或中间件中,您可以通过调用next(err)跳过剩余的调用链,其中err是任何对象。 从文档中可以很简单。

使用SuperTest进行测试时,似乎不支持此工作流程。 中间件到supertest的唯一错误结果是响应上的文本设置为[object Object]

例如:

const request = require('supertest');
const app = express();
app.use( (req, res, next) => next({ error: "ErrorCode" }) );
request(app).get('/')
  .expect(500)
  .end(function(err, res) {
    // err == undefined
    // res.text === '[object Object]'
  });

有没有办法用supertest来验证传递给next()回调的对象?

我显然可以使用sinon + chai或jasmine直接对代码进行单元测试,但我很好奇这是否可能只是超级,甚至可以在可测试单元之后支持定制的中间件。

Supertest在HTTP响应级别工作,因此它只能根据HTTP消息检查响应本身的状态,标题和正文。 它无法检查有关Express应用程序内部代码的javascript级详细信息(supertest实际上可以检查用任何语言编写的任意HTTP服务器,它只是有一些便捷代码用于表达)。

因此,首先我要编写一个错误处理程序中间件来转换您的错误对象(实际上应该是Error实例而不是普通对象),设置正确的状态代码,内容类型,正文等。然后为这些属性建立超级联想。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM