Here is a async function
async invokeWithRetry(fn,retry){
try{
return await fn();
}catch(e){
if(retry <=0)
throw e;
let timeout = (ms)=> new Promise(resolve => setTimeout(resolve, ms));
await timeout(10*1000);
console.log('failing to invoke:',retry);
return await this.invokeWithRetry(fn, --retry);
}
}
that keeps calling fn when it fails.Im unalbe to capture the error in try catch block in jest test. spyOn on is also not working. how do i capture the error message
-----test----
test.only("createRelations with invalid ctx spyOn", async function () {
let request = {
parentUserItemId: userCollection1._id,
_userItemId: userCollection1._userItemId,
relations: relationShip,
};
//jest.spyOn
let clonnedCtx = Object.assign({}, ctx, {
authToken: ctx.authToken + "test",
});
const consoleErrorSpy = jest.spyOn(global.console, 'error');
try {
await IafScriptEngine.createRelations(request, clonnedCtx);
expect(consoleErrorSpy).toHaveBeenCalled();
console.log(consoleErrorSpy)
const consoleErrors = consoleErrorSpy.mock.calls.map(([errorMessage]) => errorMessage);
expect(consoleErrors).toContain("NamedUserItem not found");
} catch (e) {
console.log("tc err ", e);
expect(consoleErrorSpy).toHaveBeenCalled();
console.log(consoleErrorSpy)
const consoleErrors = consoleErrorSpy.mock.calls.map(([errorMessage]) => errorMessage);
expect(consoleErrors).toContain("Invalid Auth Token");
let errorRes = JSON.parse(e.errorResult.error);
expect(errorRes.status).toEqual(401);
expect(errorRes.message).toEqual("Invalid Auth Token");
return;
}
fail();
}, 120000);