我是JavaScript的新手。我正在嘗試使用proxyquire編寫基本的單元測試。下面的代碼。爲async.parallel編寫測試。
文件答:
const modA=require('./modA');
const modB=require('./modB');
const async=require('async');
module.exports=function(a,b,callback){
async.parallel([
function(callback){
// db call
modA(a,b,callback);
},
function(callback){
// db call
mobB(a,b,callback);
}
],
//not able to test code
(err,res){
//do something
});
};
文件單元測試看起來如下:
const proxyquire=require('proxyquire');
function modaAStub(a, b, callback) {
return (null, modAresponse);
}
function modaBStub(a, b, callback) {
return (null, modaBresponse);
}
describe('test suite',() => {
it('test: should return results', (done) => {
const fileA = proxyquire('../../fileA', {
'./modA': modaAStub,
'./modB': modaBStub
});
fileA(someinput1,someinput2);
done();
});
});
的問題是,我無法弄清楚如何測試中的fileA的碼具有「//做一些事情」。
欣賞任何指針/代碼。
感謝。
我很困惑。我正在爲fileA編寫測試。如果我更改我的文件我正在更改我的實際代碼。我可能會丟失一些東西。 – user1948304
我真的不明白你想要測試什麼 - 理論上,測試應該驗證.parallel函數將正確的輸出返回給回調函數。如果您想要單獨測試回調,則無需將其作爲並行邏輯的一部分,只需將輸入嘲笑爲輸入即可。 – Josh
你可以嘲笑輸入作爲它的輸入 - 你可以詳細說明這個問題。我有的問題是modA,modB是數據庫調用。所以我只是希望他們被剔除,輸出是什麼並驗證模擬結果。這只是爲了測試邏輯/ /做一些事情。我不希望異步本身的實際運行。 – user1948304