1
我最近剛剛轉移到一個主要處理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);
}
});
}
我應該重構更好的可測試性嗎?有沒有我不知道的單元測試回調的常用方法?
您的匿名函數只是有兩個分支點。爲了全面覆蓋,您需要提供包含「選項」的選項,並且使用包含「錯誤」的json。這應該是非常簡單的。 –