【发布时间】:2015-03-11 15:33:43
【问题描述】:
我看到了一些similar questions,但我的设置略有不同,我想不出一个测试这个的好方法。
我正在尝试测试我的快速应用程序路由是否定向到正确的控制器方法。
例如——
//server.js, base application
var express = require("express");
var app = express();
require("./routes.js")(app);
...
//routes.js
var menuController = require("./controllers/menu.js");
module.exports = function(expressApp) {
expressApp.get('/menu', menuController.getMenu);
};
...
//test file
var express = require('express')
, menuController = require("../../controllers/menu.js")
, chai = require('chai')
, should = chai.should()
, sinon = require('sinon')
, sinonChai = require("sinon-chai");
chai.use(sinonChai);
var app = express();
require("../../routes/routes.js")(app);
describe('routes.js', function(){
it('/menu should call menuController.getMenu route', function(){
var spy = sinon.spy(menuController, 'getMenu');
app.get('/menu', spy);
spy.should.have.been.called; //fails, never called
});
});
我如何查看在调用 app.get('/menu', ..) 时是否调用了来自 menuController 的回调?或者我应该以某种方式重组应用程序(我看到了许多其他配置路由的方法)?
【问题讨论】:
标签: node.js unit-testing express sinon