인프런 커뮤니티 질문&답변

김하진님의 프로필 이미지
김하진

작성한 질문수

실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트

async-await 이 꼭 있어야하는지 질문입니다

해결된 질문

작성

·

270

2

 

안녕하세요. 강의 너무 재밌게 잘 보고 있습니다.

두가지 질문이 있어서 문의글 남깁니다.

 

 

질문 1. 테스트코드에서 async, await 가 필요없어 보이는 곳에도 꼭 붙이는 이유가 있나요?

예를들면, 아래 1번 코드에서 async await 이 반드시 필요한 이유가 있는건가요? 저는 2번처럼 async-await을 제거해도 테스트가 정상 통과 되어서요. 특별한 목적이 있어서 붙여야 하는건지 궁금합니다. !

 

1)

it('총 상품 금액은 "$500.00"로 노출된다', async () => { 
   await render(<TestPayment />);

   expect(screen.getByText('500.00')).toBeInTheDocument(); 
});

 

2)

it('총 상품 금액은 "$500.00"로 노출된다', () => { 
   render(<TestPayment />);

   expect(screen.getByText('500.00')).toBeInTheDocument(); 
});

 

 

질문 2. render 함수를 util 로 만들어서 사용하시는데, userEvent.setup의 user 도 함께 들어있는 이유가 궁금합니다.

userEvent를 쓰지 않는 테스트코드도 있는데, 꼭 함께 들어있어야하나 하는 생각이 들어서요 ㅎㅎ

userEvent를 더 편리하게 사용하기 위함인가요?

export default async (component, options = {}) => {
  const { routerProps } = options;
  const user = userEvent.setup();

  return {
    user,
    ...render(
      <QueryClientProvider client={queryClient}>
        <MemoryRouter {...routerProps}>{component}</MemoryRouter>
        <Toaster />
      </QueryClientProvider>,
    ),
  };
};

 

감사합니다!

답변 1

0

코드 조커, 오프님의 프로필 이미지
코드 조커, 오프
지식공유자

안녕하세요 하진님~! 문의주신 질문 답변 드리겠습니다.

질문 1. 테스트코드에서 async, await 가 필요없어 보이는 곳에도 꼭 붙이는 이유가 있나요?

-> 우선 예제 코드에 render.jsx에 있는 함수가 async로 작성되어 있어서 await를 호출하였는대요. 다시 코드를 보니 사실상 promise를 쓰는 부분이 전혀 없어서..말씀하신대로 async,await가 현재는 필요없는 상황이네요. 이 부분은 저희가 초반에 코드를 작성하고 수정하는걸 놓쳤네요..!

결론적으로 현재 테스트 코드에서 render 함수 호출 시 async,await는 필요 없습니다

 

질문 2. render 함수를 util 로 만들어서 사용하시는데, userEvent.setup의 user 도 함께 들어있는 이유가 궁금합니다.

-> 넵 해당 부분은 말씀하신대로 이벤트 시뮬레이션을 좀 더 편리하게 하기 위함입니다. 안그러면 이벤트 시뮬레이션이 필요한 테스트 파일에서 호출해줘야 하는 번거로움이 있어 객체에 함께 포함시켜두었습니다! 😀
(공식 홈페이지에서 가이드하는 내용이기도 합니다!)

 

이외에 다른 질문 있으시면 편하게 문의 주세요. 감사합니다!

김하진님의 프로필 이미지
김하진

작성한 질문수

질문하기