TIL,WIL(일간,주간 회고)

[TIL] jest 에러 테스트시 await 있을 때 없을 때 차이

worldint 2023. 9. 25. 16:55

jest로 에러테스트시에 지금까지 아래와 같이 해왔다

it('에러테스트', async () => {
    const service = new Service();

    expect(await service.execute(req)).rejects.toStrictEqual(
      new Error('failed'),
    );
  });

이때 await을 쓰면 테스트가 통과 되지 않고 
await을 안쓰면 테스트가 통과되는데 
그 이유는 .rejects는 Promise객체에만 쓸 수 있는데  await을 쓰면 그것은 이미 어떤 값이 되어 버린것이기 때문에
.rejects를 쓸 수 없기 때문이다 
awati 쓸 꺼면
아래처럼 tyr catch 쓰고 에러 문구가 잘 맞나 테스트하면된다

try {
      await service.execute(req);
    } catch (e) {
      expect(e).toEqual(new Error('failed'));
    }