编写async.parallel的testing。
我是javascript的新手。我正在尝试使用proxyquire编写基本的unit testing。 下面的代码。
文件 – 答:
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 });
};
文件A的unit testing如下所示:
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(); }); });
问题是,我无法弄清楚如何testingfileA中有'//做些什么'的代码片段。
欣赏任何指针/代码。
谢谢。
好吧,我太笨了。fileA的unit testing如下图所示。
const proxyquire=require('proxyquire'); const async=require('async'); const expect=require('chai').expect; const modAresponse={ a:'1' }; const modBresponse={ b:'1' }; const a={ a:'1' }; const b={ b:'1' }; const someresponse={ a:'1', b:'1' }; function modaAStub(a, b, callback) { return callback(null, modAresponse); } function modaBStub(a, b, callback) { return callback(null, modaBresponse); } describe('test suite', () => { it('test: should return results', (done) => { const fileA = proxyquire('../../fileA', { './modA': modaAStub, './modB': modaBStub, async }); fileA(a,b,(err,response)=>{ expect(JSON.stringify(response)).to.equal(JSON.stringify(someresponse)); }); done(); }); });
您可以传递另一个函数,并将其用作callback函数。
function callbackStub(err, result) { return (null, modAresponse); }
然后在你的文件中答:
// import the callback stub above async.parallel([ function(callback){ // db call modA(a,b,callback); }, function(callback){ // db call mobB(a,b,callback); } ],callbackStub);