我正在尝试在使用Express进行路由的NodeJS API中实现单元测试。路由通常通过以下方式实现:
routes / code.js
router.get('/code', someFunction, function(req, res) {
/// anonymous callback here
}
因此它像这样包含在应用程序中:
app.js
var app = express();
app.use('/short-route', require('./path/to/code'));
在routes/code.js
中可以看到,它具有路由路径,向参数(someFunction(req: any, res: any, next: callback)
)传递参数的第二个函数以及用于处理原始请求的最终匿名回调。
我面临的问题是,我想测试路线的正常行为,但会欺骗第二个参数someFunction
的响应,最好通过使用Sinon存根将其覆盖。 someFunction
本质上可以处理一些身份验证检查,但我想控制身份验证的最终状态,这样我就不必在测试中存储凭据,也可以控制成功和失败。
我对Sinon或Mocha&Chai并不十分熟悉,我只实现了一些基本的测试,这些测试通过chai-http
发送请求,然后检查响应。
我试图像这样通过chai-http进行get呼叫:
let res = await chai.request(app)
.get('/route/to/code', sinonStub)
但是我马上就觉得这是不对的,因为它不仅参数短,而且我很确定该参数被当作回调来处理从服务器获得的响应。所以我很困惑。
如果任何人都感到特别慷慨,如果您能向我解释一下请求,响应和回调对象是如何传递给someFunction
的,因为我对此并不完全了解,我也将不胜感激。 / p>