Here is my function, in this function, there are two promise function in the 'start' function. How should I test the 'start' function.
export class TTT{
fun1(){
return new Promise(((resolve, reject) => {
console.log('function1');
resolve('function1');
}))
}
fun2(param){
return new Promise(((resolve, reject) => {
console.log('function2');
resolve(param);
}))
}
fun3(param){
console.log('function3');
return param;
}
async start(){
let param1 = await this.fun1();
let param2 = await this.fun2(param1);
this.fun3(param2);
}
}
And the next test file was wrote by myself. I stub fun1, fun2, and fun3, but it seems only first function works.
describe('test',function () {
it('test ', function () {
let stub_fun1 =
sinon.stub(TTT.prototype,'fun1').callsFake((param)=>{
console.log('fun1');
return (Promise.resolve('fun1'));
});
let stub_fun2 =
sinon.stub(TTT.prototype,'fun2').callsFake((param)=>{
console.log('fun2');
return (Promise.resolve('fun2'));
});
let stub_fun3 =
sinon.stub(TTT.prototype,'fun3').callsFake((param)=>{
console.log('fun3');
return 'fun3';
});
let handler = new TTT();
let param = handler.start();
console.log(param);
stub_fun1.restore();
stub_fun2.restore();
stub_fun3.restore();
});
});
And, the result is
test
fun1
Promise { }
✓ test
function2
function3