【发布时间】:2015-04-01 05:50:28
【问题描述】:
我知道这已经讨论过几次了。无论如何,我觉得所有提供的解决方案都不(完全)符合我的要求。我有以下代码:
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);
所以我不必为每个资源编写一个文件,但我只有一个通用路由器。
我想测试我的通用路由器,但我发现了一些问题:
- 如何“注入”应用程序?我可以创建一个 Express (
var app = express();) 的实例,但我认为模拟会更好(因为这是一个单元测试,而不是集成测试!)。获得合适的模拟的最佳方式是什么? - 我究竟应该测试什么?据我所知,我的路由器本身(没有集成)除了控制台输出(不值得测试)和函数调用(
controller.create(req, res);)之外没有做任何其他事情。我应该如何测试这个函数是否被调用?或者还有什么要测试的?
【问题讨论】:
标签: node.js unit-testing express mocha.js