2014-12-27 61 views
2

我对node.js和Mocha很新颖。我想测试以下功能:用摩卡请求调用函数

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; 
}; 

什么是测试此功能的正确方法?这个函数碰到一个休息终点,得到一个JSON,解析它并返回一个对象。

这是一个示例JSON,我得到:

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

我应该嘲笑的要求?我如何在摩卡嘲笑它?

回答

0

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

我想你应该嘲笑请求函数来调用你的休息端点应该发送给你的答案的回调函数。

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