簡體   English   中英

單元測試javascript承諾

[英]Unit testing javascript promises

我的代碼通過ajax從服務器獲取數據並使用promises。

如何為此代碼編寫單元文本?

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

您可以使用nock模擬服務器響應,並通過mocha斷言promise值

describe('promise' function (done) {
  getPromise.then(response => {
    // assert response
    done()
  })
}

我猜你想要測試一下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函數來測試你的場景

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM