簡體   English   中英

如何對該代碼段進行單元測試?

[英]How can I unit test this code snippet?

我最近剛轉到一個新項目,該項目主要使用Javascript(作為Node.js Web應用程序)進行交易。

我是一名相當注重TDD的開發人員,並且正在嘗試找出最佳方法/模式,以確保最終構建的產品可以進行單元測試和維護。

我一直在嘗試將以下代碼片段與單元測試一起包裝,但是在獲取作為請求回調傳入的匿名函數的代碼覆蓋方面遇到困難。

我已經使用rewire.js庫模擬了請求對象,並且可以成功測試是否調用了記錄器,並使用正確的參數調用了該請求,但是我該如何完成測試覆蓋范圍?

function _makeRequest(apiName, options, payload, callback) {
  logger.info('DS API %s Request:\n  %s %s\n  %s', apiName, options.method, options.url, logger.look(payload));
  request(options, function(error, response, body) {
    var json = 'json' in options ? body : JSON.parse(body);

    if ('error' in json) {
      var msg = 'DS API ' + apiName + ' Error:\n  ' + logger.look(json.error);
      logger.info(msg);
      callback(null);
    } else { // no error
      logger.info('DS API %s Response:\n  %s', apiName, logger.look(json));
      callback(json);
    }
  });
}

我應該重構以獲得更好的可測試性嗎? 有我不知道的用於單元測試回調的通用方法嗎?

卡爾使我朝着正確的方向前進。 我已經為測試設置了參數,並且輸入數據范圍廣(以確保所有代碼行都可以在一個或另一個測試中執行),但是最后,在將回調參數傳遞給之后,它實際上並未執行回調參數。 rewire.js模擬。

回調正在執行,但是我需要在模擬程序中執行它,以確保仍然執行回調代碼

暫無
暫無

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

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