더북(TheBook)

제스트는 테스트를 더 구조화된 방식으로 만들 수 있는 여러 함수를 제공한다. describe() 함수는 여러 테스트를 그룹으로 묶을 수 있다. describe()는 컴퓨터의 폴더 구조와 같은 느낌으로 이해하면 쉽다. test() 함수는 개별 테스트를 의미한다. it() 함수는 test의 별칭(alias)으로, describe()와 함께 사용할 때 좀 더 높은 가독성을 제공한다.

beforeEach() 함수는 중첩된 describe()it() 함수에서 공통으로 사용하는 코드를 추출하여 중복을 피하는 데 도움을 준다.

beforeEach() 함수를 사용하면 테스트가 어떤 일을 하는지 찾아보기 위해 코드의 여러 곳을 살펴보아야 하므로 ‘스크롤 피로감’이 생길 수 있다.

팩토리 함수를 사용한 순수한 테스트(어떠한 beforeEach() 함수도 사용하지 않은)는 가독성을 높이고 스크롤 피로감을 줄이는 데 도움을 준다.

비슷한 입력 값을 반복적으로 사용하는 매개변수화 테스트(parameterized test)는 매개변수를 배열과 같이 한데 묶어 하나의 테스트로 작성할 수 있다(test.each() 함수를 사용한다). 이렇게 하면 코드양을 줄일 수 있다. 하지만 테스트를 일반화할수록 가독성이 떨어진다는 단점이 있다.

테스트 가독성과 코드 재사용성 사이의 균형을 잡기 위해 입력 값만 매개변수로 사용하고, 출력 값은 별도의 테스트를 작성한다.

제스트는 테스트 카테고리를 지원하지 않지만 --testPathPattern 플래그를 사용하여 특정 경로에 있는 테스트 그룹을 실행할 수 있다. 또 설정 파일에서 testRegex를 설정하여 원하는 테스트 파일을 지정할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.