Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单元测试javascript承诺_Javascript_Promise - Fatal编程技术网

单元测试javascript承诺

单元测试javascript承诺,javascript,promise,Javascript,Promise,我的代码通过ajax从服务器获取数据,并使用承诺 如何为该代码编写单元文本 function getPromise(){ var p = new Promise(function(resolve, reject) { http.get({ host: 'localhost', port: 3000, path: '/blist' }, function(res) { if(res.statusCode < 20

我的代码通过ajax从服务器获取数据,并使用承诺

如何为该代码编写单元文本

function getPromise(){ 
  var p = new Promise(function(resolve, reject) { 
    http.get({ 
      host: 'localhost', 
      port: 3000, 
      path: '/blist'
    }, function(res) { 
      if(res.statusCode < 200 || res.statusCode>300) { 
        reject('statusCode=' + res.statusCode); 
        return; 
      } 
      var data=""; 
      res.on('data', function (chunk) { 
        data += chunk; 
        resolve(data); 
        return; 
      }); 
      res.on('error', function(error) { 
        console.log("Got error: " + e.message); 
        reject(error); 
      }); 
    }) 
  }); 
  return p; 
}
函数getPromise(){
var p=新承诺(函数(解析、拒绝){
http.get({
主机:“localhost”,
港口:3000,
路径:'/blist'
},函数(res){
如果(res.statusCode<200 | | res.statusCode>300){
拒绝('statusCode='+res.statusCode);
返回;
} 
var数据=”;
res.on('data',函数(块){
数据+=块;
解析(数据);
返回;
}); 
res.on('error',函数(error){
log(“获取错误:+e.message”);
拒绝(错误);
}); 
}) 
}); 
返回p;
}

您可以使用模拟服务器响应,并通过


您可以使用模拟服务器响应,并通过


我想您应该测试promise函数,如果您伪造http调用,它是否会达到预期效果

这样,您可能会考虑传递HTTP对象和作为参数的回调,这样可以模拟它们并模拟测试中的成功和错误响应。

差不多

getPromise(http, req, callback) {
  var promise = new Promise((resolve, reject) -> {
    http.get(req, callback);
    callback.on('data', data -> { // Resolve or reject looking at the status code })
  })
  return promise;
}

然后你可以模拟你的回调和http#get函数来测试你的场景

我想你会想测试promise函数,如果你伪造一个http调用,它是否会达到预期效果

这样,您可能会考虑传递HTTP对象和作为参数的回调,这样可以模拟它们并模拟测试中的成功和错误响应。

差不多

getPromise(http, req, callback) {
  var promise = new Promise((resolve, reject) -> {
    http.get(req, callback);
    callback.on('data', data -> { // Resolve or reject looking at the status code })
  })
  return promise;
}

然后你可以模拟你的回调和http#get函数来测试你的场景

你能添加一个更简洁的例子吗?告诉我们你到现在为止都尝试了什么?我创建这个函数来调用getPromise()模块。exports={list:function(req,res){var p=getPromise();p.Then(function(data){res send(data);})。catch(function(err){console.log(err);}}}@flower,在您的单元测试中,您可以模拟$http服务。看看这个文档。您可以添加一个更简洁的示例吗?告诉我们您到目前为止都做了些什么?我创建这个funct是为了调用getPromise()模块。exports={list:function(req,res){var p=getPromise();p(function(data){res.send(data);}).catch(function(err){console.log(err);}}}}@flower,在你的单元测试中,你可以模拟$http服务。看看这个文档。你能解释更多你的意思吗?你能解释更多你的意思吗?