我是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