jest - 비동기 테스트

raejun·2022년 3월 29일
0

비동기 테스트 예제

function fetchProduct(error) {
  if (error === 'error') {
    return Promise.reject('network error');
  }
  return Promise.resolve({ item: 'Milk', price: 200 });
}

module.exports = fetchProduct;
  • fetchProduct는 error변수가 "error"라는 문자열이면 reject를 반환하고 아니면 resolve를 반환

done 방식

it('async - done', (done) => {
    fetchProduct().then((item) => {
      expect(item).toEqual({ item: 'Milk', price: 200 });
      done();
    });
  });
  • 콜백함수 인자에 done을 넣어주고 마지막에 done() 함수를 실행하는 방식으로 비동기 동작

return 방식

it('async - return', () => {
    return fetchProduct().then((item) => {
      expect(item).toEqual({ item: 'Milk', price: 200 });
    });
  });
  • 프로미스를 리턴하는 방식으로 비동기 동작

async await 방식

it('async - await', async () => {
    const product = await fetchProduct();
    expect(product).toEqual({ item: 'Milk', price: 200 });
  });
  • async await 방식으로 비동기 동작

async resolves/reject 방식

it('async - resolves', () => {
    return expect(fetchProduct()).resolves.toEqual({
      item: 'Milk',
      price: 200,
    });
  });

  it('async - reject', () => {
    return expect(fetchProduct('error')).rejects.toBe('network error');
  });
  • expect에 프로미스 함수를 넣어 리턴
  • 성공 케이스는 resolves, 실패 케이스는 rejects를 사용
profile
정리노트

0개의 댓글