선 개발 후 테스트 방식이 아닌 선 테스트 후 개발 방식의 프로그래밍 방법을 말한다.
다시 말해 먼저 자동화된 테스트 코드를 작성한 후 테스트를 통과하기 위한 코드를 개발하는 방식의 개발 방식을 말한다.
① [Red] 실패하는 테스트 코드 먼저 작성
② [Green]테스트 코드를 성공시키기 위한 프로덕션 코드 작성
③ [Black] 중복 코드 제거, 일반화 등의 리팩토링
Counter를 만든다는 가정하에..
사용자 흐름에 따라 테스트 코드 작성
counter
라는 Id를 가진 요소를 가져와서 0인지 확인screen.getByTestId()
getByTestId
쿼리를 이용해서 엘레멘트에 접근. 편리하긴 하지만 testing library
에서 추천하는 쿼리 사용 우선 순위가 있으므로 더 나은 코드를 작성하기 위해 살펴보자!
userEvent
실제 유저의 행위가 더 잘 표현되기에
userEvent
가 추천되는 방법이다.
userEvent
는 fireEvent
를 사용해서 만들어졌다. userEvent
의 내부 코드를 보면 fireEvent
를 사용하면서 엘리먼트의 타입에 따라서 Label
을 클릭했을 때, checkbox
, radio
을 클릭했을 때 그 엘리먼트 타입에 맞는 더욱 적절한 반응을 보여준다.예를 들어서 fireEvent
로 버튼을 클릭하면 fireEvent.click(button)
버튼이 focus 되지 않습니다. 하지만 userEvent
로 클릭하면 userEvent.click(button)
버튼이 focus된다.