【发布时间】:2012-03-01 14:24:46
【问题描述】:
我正在学习 Node.js,并且一直在玩 Express。真的很喜欢这个框架;但是,我无法弄清楚如何为路由编写单元/集成测试。
能够对简单的模块进行单元测试很容易,并且一直在使用Mocha;但是,我使用 Express 进行的单元测试失败了,因为我传入的响应对象没有保留这些值。
被测路由功能(routes/index.js):
exports.index = function(req, res){
res.render('index', { title: 'Express' })
};
单元测试模块:
var should = require("should")
, routes = require("../routes");
var request = {};
var response = {
viewName: ""
, data : {}
, render: function(view, viewData) {
viewName = view;
data = viewData;
}
};
describe("Routing", function(){
describe("Default Route", function(){
it("should provide the a title and the index view name", function(){
routes.index(request, response);
response.viewName.should.equal("index");
});
});
});
当我运行它时,它因“错误:检测到全局泄漏:viewName,数据”而失败。
我哪里出了问题才能让它工作?
有没有更好的方法在这个级别对我的代码进行单元测试?
更新 1. 更正代码 sn-p,因为我最初忘记了“it()”。
【问题讨论】: