我有這個文件包含下面的代碼,這是我的API的數據庫層。它在外部依賴於SQL Server來獲取數據。如何使用mocha和chai單元測試此node.js模塊?
var sql = require('mssql');
var async = require('async');
module.exports = {
getDetails: function(number, callback) {
async.parallel({
general: function(callback) {
getGeneral(number, callback);
},
preferences: function(callback) {
getPref(number, callback);
}
},
function(err, results) {
if (err) {
logger.error(err);
throw err;
}
callback(results);
});
}
};
function getGeneral(number, callback) {
var mainconnection = new sql.Connection(dbCredentials[1].generalDBConfig, function(err) {
var request = new sql.Request(mainconnection);
request.input('number', sql.BigInt, number);
request.execute('[number].[genral_get]', function(err, recordsets) {
if (err) {
logger.error(err);
}
var gen = {};
var spResult = recordsets[0];
if (spResult[0] != null) {
spResult.forEach(function(record) {
var test = {};
gen[record.genCode] = record.genValue;
});
callback(null, gen);
} else {
callback(null, null);
}
});
});
}
function getPref(number, callback) {
var mainconnection = new sql.Connection(dbCredentials[0].prefDBConfig, function(err) {
var request = new sql.Request(mainconnection);
request.input('number', sql.BigInt, number);
request.execute('[number].[pref_get]', function(err, recordsets) {
if (err) {
logger.error(err);
}
var spResult = recordsets[0];
if (spResult[0] != null) {
callback(null, spResult[0]);
} else {
callback(null, null);
}
});
});
}
數據庫層的回該JSON格式數據:
{
"general": {
"number": "72720604"
"title": "Mr ",
"buildingNameNumber": null,
"subBuildingName": null,
"streetName": null,
"postalTown": null,
"county": null
},
"pref": {
"UseAccessibilitySite": "00000",
"IntroductorySource": "75"
}
};
由於我是新來的單元測試,我不知道如何開始對編寫單元測試該模塊,即使選擇摩卡與柴作爲我的單元測試框架。任何種類的建議或幫助表示讚賞...
我不是殘存整個MSSQL服務器,而是存根/模擬來測試這個模塊或數據庫層所需的東西。可以請給我看一些模塊的示例測試用例,如果它對你有用,那麼它可能會給你一些kickstart。 – Prajwal
任何答案,因爲我嘲笑數據庫! – Prajwal
以我的經驗,sinon.js文檔非常好。例如,你可以使用'存根。返回({input:inputFunction,execute:executeFunction})'返回一個虛假的請求對象。此外,您可以在使用sinon的代碼的博客文章中找到許多示例。 –