해결된 질문
작성
·
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 도 함께 들어있는 이유가 궁금합니다.
-> 넵 해당 부분은 말씀하신대로 이벤트 시뮬레이션을 좀 더 편리하게 하기 위함입니다. 안그러면 이벤트 시뮬레이션이 필요한 테스트 파일에서 호출해줘야 하는 번거로움이 있어 객체에 함께 포함시켜두었습니다! 😀
(공식 홈페이지에서 가이드하는 내용이기도 합니다!)
이외에 다른 질문 있으시면 편하게 문의 주세요. 감사합니다!