0

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);

0 Answers0