保持快速路线

时间:2016-05-18 00:58:23

标签: node.js express controller routing

我想编写一个测试,针对给定的HTTP请求命中一个给定的Express控制器端点。或者说,经过身份验证的请求会通过每个中间件并点击控制器。

我实际上并不关心控制器,实际上控制器价格昂贵,所以我宁愿不运行它。

说出类似的话:

UsersController.js
module.exports = {
    get: function(req, res) {
        // Simplified for example purposes. Assume this does something complex.
        res.status(200).json({id: "user123"});
    }
}

然后我有一个路由器:

var router;
module.exports = router = new express.Router();
router.get('/users/:id', isAuthenticated, isAdmin, logRequest, UsersController.get);

我想在测试中写下这样的东西:

controllerStub = sinon.stub(UsersController, 'get', function(req, res) {
    res.status(418).json(message: "I'm a teapot");
});
request.get('http://localhost:port/users/user123', function(err, response, body) {
    response.statusCode.should.equal(418);
    controllerStub.callCount.should.equal(1);
});

不幸的是,我认为Express修改函数指针的方式是使用Sinon来控制控制器实际上并不影响Express调用的函数。

我有什么方法可以达到"进入Express路由器并获取/替换/存根运行路由?

0 个答案:

没有答案