使用supertest和Express JS测试next(err)
Testing for next(err) with supertest and Express JS
在Express中的路由或中间件中,您可以通过调用next(err)来跳过剩余的调用链,其中err是任何对象。这在文档中非常简单。
当使用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]'
});
是否有一种方法与超级测试来验证对象传递给下一个()回调?
我显然可以使用sinon+chai或jasmine直接对代码进行单元测试,但我很好奇这是否可能仅使用supertest,甚至可能在可测试单元之后支持定制中间件。
Supertest在HTTP响应级别工作,因此它只能根据HTTP消息检查响应本身的状态、报头和正文。它不能检查express应用程序中代码的javascript级细节(supertest实际上可以检查用任何语言编写的任意HTTP服务器,它只是为express提供了一些方便的代码)。
因此,首先我将编写一个错误处理程序中间件来翻译您的错误对象(实际上应该是Error
实例而不是普通对象),设置适当的状态码,内容类型,正文等。然后为这些属性创建超测试关联。
相关文章:
- ES6生成器:.next()的输入值
- 使用next、prev按钮制作简单的jQuery图像滑块
- Redux中间件在next()之前更改状态
- 安装节点6后出错,npm ERR!无效版本:1.0.5beta
- system.err风格的控制台以javascript打印
- AngularJS:使用ng-show/hide动态维护下拉列表的3种状态(InProgress、Success、Err
- npm ERR!安装无法't在mac上读取依赖项
- 如何禁用FuelUX向导步骤1中的NEXT按钮
- 如何在ES Next中扩展静态属性
- .next() 未按预期工作
- 使用生成器函数 next() 作为 node.js 中的回调
- 在解析到next之前减少所有JS Promises
- 尝试触发点击document.ready中Bigcommerce Classic Next主题中的产品选项
- 为什么使用 .next() 选择所有 li 项而不是一个
- Jquery:为新数据创建寻呼机(next-prev按钮)
- 使用jquery UI next按钮提交输入字段值,php将返回结果
- AJAX在数组循环中调用,只在上一次完成后调用next
- 带有prev和next的jquery自定义循环插件
- 这是如何工作的呢?Express (err, req, res, next)或(req, res, next)中可选的第
- 使用supertest和Express JS测试next(err)