我想在Express节点设置中测试我的控制器;我不在控制器本身中使用res.send()
方法,而是在单独的中间件中使用
它看起来像:
Router > checkSession > Validation > Controller > send > errorHandler
我的控制器方法如下:
foo : (req, res, next){
//if something wrong
const error = new Error("error msg")
error.status = 400
return next(error)
//if everything OK
req.response = {
//Json to send
}
next()
}
“发送中间件”检查req.response
并正确执行response.send()
给客户端
现在我在努力: 我正在对控制器方法进行UnitTesting,我想访问请求(然后与预期结果进行比较)。
在Express上下文中很容易,在外面找不到解决方案
it("check response", () => {
const expectedResponse = { json: "myReponse" }
const req = { body: expectedResponse.json }
const res = {}
const next = ()=>{}
controller.method(req, res, next)
// want to test req
// expect(req.response).to.be.equal(expectedResponse)
})
我正在使用mocha / chai / sinon作为测试框架