我想用Sinon存根重写路由的get参数

时间:2019-07-15 17:47:32

标签: javascript express mocha sinon-chai

我正在尝试在使用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>

0 个答案:

没有答案