0
如何使用vows.js乾淨地測試以下函數,旨在添加基於對象層次結構的express.js應用程序的路由,而不會破壞誓言對主題和誓言的分離?如何用誓言測試此功能?
var addRoutes = function(routeObject, app, path) {
var httpVerbs = ['get', 'post', 'put', 'delete'];
path = path || '';
for(var property in routeObject){
var routesAdded = false;
for (var verbIndex in httpVerbs) {
var verb = httpVerbs[verbIndex];
var completePath, handler;
if (property === verb) {
if (typeof(routeObject[verb]) === 'function') {
handler = routeObject[verb];
completePath = path;
} else {
handler = routeObject[verb].handler;
completePath = path + (routeObject[verb].params || '');
}
app[verb](completePath, handler);
routesAdded = true;
}
}
if (!routesAdded) {
addRoutes(routeObject[property], app, path + '/' + property);
}
}
};
測試應該確認在應用程序對象上調用對應於http動詞的函數。例如如果routeObject是:
{
tracker: {
message: {
get: {
handler: function (req, res) {
res.send("respond with a resource");
}
}
}
}
}
然後
app.get('/tracker/message', function (req, res) {
res.send("respond with a resource");
});
應該叫。
謝謝你,有沒有辦法直接測試功能,而無需啓動快車嗎?我想存根應用程序對象,並檢查,得到,發佈等被調用適當。問題是我無法從發誓中獲得它。 – alexbirkett