在Mocha中使用请求调用来testing一个函数

我对node.js和Mocha很新。 我想testing以下function:

querybackend = function(url,queryParams) { var backendData ={}; request({url:url, qs:queryParams}, function(err, response, body) { if(err) { console.log(err); return; } var data = JSON.parse(body); var length = data.length; var tmp = data[0].DataPoints[0].length; var in_sum =Array.apply(null, new Array(tmp)).map(Number.prototype.valueOf,0); var timestamp = []; var index1; var index2; for(index1=0;index1 < length;index1++) { var length2=data[index1].DataPoints.length; for(index2=0;index2<length2;index2++) { in_sum[index2]= in_sum[index2] + data[index1].DataPoints[index2][1]; timestamp[index2] = data[index1].DataPoints[index2][0]; } } backendData.count = in_sum; backendData.timestamp = timestamp; deferred.resolve(backendData); }); return deferred.promise; }; 

什么是testing这个function的正确方法? 这个函数碰到一个rest的终点,得到一个JSON,parsing它并返回一个对象。

这是我得到的示例JSON:

 [ { "Name": "name1", "DataPoints": [ [ 1410627915, 242221 ] ] }, { "Name": "name2", "DataPoints": [ [ 1410627913, 238157 ] ] }, { "Name": "name3", "DataPoints": [ [ 1410627922, 215045 ] ] } ] 

我应该嘲笑这个请求吗? 我如何在摩卡嘲笑它?

如果你想用摩卡创build模拟或存根,你需要使用一些模块。 Sinon.js( http://sinonjs.org/ )是一个很好的,很容易使用和很好地logging。

我想你应该嘲笑请求函数调用你的rest端点应该给你的答案的callback函数。

然后,你可以testing你的函数应该做的所有事情是否正确完成。 顺便说一句,如果你想testing一个函数是否被调用,你可以用sinon在这个函数上创build一个间谍。