gpt4 book ai didi

node.js - 单元测试快速路由器

转载 作者:搜寻专家 更新时间:2023-11-01 00:07:50 25 4
gpt4 key购买 nike

我知道这已经讨论过几次了。无论如何,我觉得所有提供的解决方案都不(完全)符合我的要求。我有以下代码:

router.js:
------------------
var Router = function(app, resourceName, controller) {
//Create
app.post('/api/' + resourceName, function(req, res) {
console.log('Incoming request: ' + resourceName + ' (POST)');
controller.create(req, res);
});
};

module.exports = Router;

如您所见,这是一个非常“通用”的路由器。它可以像这样在服务器中实例化:

var app = express();
var userController = ...
var userRouter = new Router(app, 'Users', userController);

所以我不必为每个资源编写一个文件,但我只有一个通用路由器。

我想测试我的通用路由器,但我发现了一些问题:

  1. 如何“注入(inject)”应用程序?我可以创建一个 Express 实例 (var app = express();),但我认为模拟会更好(因为这是单元测试,而不是集成测试!)。获得适当模拟的最佳方法是什么?
  2. 我究竟应该测试什么?据我所知,我的路由器本身(没有集成)除了控制台输出(不值得测试)和函数调用(controller.create(req, res); ).我应该如何测试这个函数是否被调用?或者还有什么要测试的吗?

最佳答案

  1. 您可能应该对应用程序进行 stub 实现。

  2. 您要测试的是构造函数在指定路由+HTTP 方法上注册监听器。我建议将 Sinon.js stub 放入您的应用程序 stub 中,然后在您的测试中检查它们是否使用预期参数调用。

关于node.js - 单元测试快速路由器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28275102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com