我是javascript的新手。我正在尝试使用proxyquire编写基本的单元测试。以下代码。
文件A:
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的单元测试如下所示:
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中测试那些有“//做某事”的代码。
感谢任何指针/代码。
感谢。
答案 0 :(得分:1)
好的,我太傻了.fileA的单元测试如下所示。
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();
});
});
答案 1 :(得分:0)
您可以传入另一个函数,并将其用作回调函数。
function callbackStub(err, result) {
return (null, modAresponse);
}
然后在你的文件A:
// import the callback stub above
async.parallel([
function(callback){
// db call
modA(a,b,callback);
},
function(callback){
// db call
mobB(a,b,callback);
}
],callbackStub);