Jest DOM 테스트

Jest DOM
RTL은 jest-dom 라이브러리의 사용법에 따라 매처(matchers)를 추가해 테스트를 수행합니다. 테스트 스위트(Suite)는 여러 테스트 케이스(Case)를 포함할 수 있지만, 케이스가 반드시 스위트 안에 포함되어야 하는 것은 아닙니다.
아래 코드는 테스트 스위트 안에 테스트 케이스를 포함하는 간단한 예입니다.
테스트 시나리오
만들어야 할 로직을 테스트 하는 파일을 먼저 만듭니다.
테스트 결과는 FAIL이 나올겁니다. 아직 로직을 짜기 전이기 때문이죠.
테스트 결과가 PASS가 되도록 코드 로직을 작성합니다.
테스트 결과 PASS 되면 성공입니다. 테스트를 통해 "기대" 값과 "실제" 값이 같음을 입증했고, 신뢰할 수 있습니다.
테스팅 파일 이름 규칙
Jest는 다음의 이름 규칙으로 테스트 파일을 찾아 테스팅을 수행합니다.
__tests__폴더 안의.js접미사가 있는 파일.test.js접미사가 있는 파일.spec.js접미사가 있는 파일
어설션(Assertion) 함수
toBeNull(), toBeInTheDocument()와 같은 어설션 함수를 말합니다. 각 어설션 함수(커스텀 매처)에 대한 상세한 사용법은 Custom Matchers 문서를 참고하세요.
toBeDisabled()
비할성(disabled) 요소인지 여부를 검사합니다.
toBeEnabled()
not.toBeDisabled()와 동일합니다.
toBeEmpty()
요소가 포함하는 자식 노드를 포함하지 않는 지 여부를 검사합니다.
toBeEmptyDOMElement()
요소에 표시되는 콘텐츠가 없는 지 여부를 검사합니다. 주석은 무시하지만, 요소에 공백이 있으면 실패합니다.
toBeInTheDocument()
문서에 요소가 포함되어 있는 지 여부를 검사합니다.
toBeInvalid()
요소가 유효한 지 여부를 검사합니다. 값이 없는aria-invalid 속성을 가지고 있거나 "true" 값이 설정된 경우, checkValidity() 결과 값이 false인 경우 요소가 유효하지 않은 것으로 판단합니다.
toBeRequired()
폼 요소가 필수 입력을 요구하는 지 여부를 검사합니다. required 또는 aria-required="true" 속성을 가진 경우 검사를 통과합니다.
toBeValid()
요소가 유효한 지 여부를 검사합니다. 값이 없는aria-invalid 속성을 가지고 있지 않거나 "false" 값이 설정된 경우, checkValidity() 결과 값이 true인 경우 요소가 유효한 것으로 판단합니다.
toBeVisible()
요소가 사용자에게 보이는 지 여부를 검사합니다. 다음 요건에 모두 충족하면 검사를 통과합니다.
요소가 문서에 포함되어 있습니다.
요소의
display스타일 속성 값이none이 아닙니다.요소의
visibility스타일 속성 값이hidden또는collapse가 아닙니다.요소의
opacity스타일 속성 값이0보다 큽니다.요소에 hidden 속성이 설정되지 않았습니다.
요소를 포함하는 상위 요소가 문서에 포함되고, 보여야 합니다.
<details /> 요소의
open속성이 설정되어 있습니다.
toContainElement()
요소가 다른 요소를 포함하는 지 여부를 검사합니다.
toContainHTML()
요소가 HTML 요소를 표현하는 문자열을 포함하는 지 여부를 검사합니다.
아마도 이 매치를 사용할 필요가 없을 것입니다.
사용자가 브라우저에서 앱을 인식하는 관점에서 테스트를 권장합니다. 그러므로 특정 DOM 구조에 대한 테스트는 수행하지 않는 것이 좋습니다. 사용자가 제어하는 DOM 구조를 확인하는 데 사용해서는 안 됩니다. 대신 toContainElement()를 사용하세요.
테스트 중인 코드가 외부 소스에서 가져온 HTML을 렌더링하고 해당 HTML 코드가 의도한 대로 사용되었는지 확인하는 경우에 유용할 수 있습니다.
toHaveAttribute()
요소가 특정 속성을 포함하는 지 여부를 검사합니다. expect.stringContaining 또는 expect.stringMatching을 사용해 속성에 특정 기대 값 또는 부분 일치가 있는지 선택적으로 확인할 수 있습니다.
toHaveClass()
요소가 특정 class 이름을 가지고 있는 지 여부를 검사합니다. (정확한 검사가 필요한 경우 {exact: true} 설정)
toHaveFocus()
요소에 현재 포커스(초점) 이동이 되어 있는 지 여부를 검사합니다.
toHaveFormValues()
폼에 name 속성이 지정된 폼 컨트롤을 포함하고 있고, 지정된 값을 가지고 있는 지 여부를 검사합니다.
toHaveStyle()
요소에 특정 값이 적용 된 특정 CSS 속성이 있는 지 여부를 검사합니다. 요소 중 일부가 아닌, 모든 예상 속성이 적용되는 경우에만 일치합니다.
계산 된 CSS 스타일 결과 값 반영
문서에서 현재 사용 중인 스타일시트에 정의 된 일부 규칙이 클래스 이름을 통해 요소에 적용되는 규칙에서도 작동합니다. 일반적인 CSS 우선 순위 규칙이 적용됩니다.
toHaveTextContent()
요소에 텍스트 내용이 포함되어 있는 지 여부를 검사합니다. 문자열 인자가 전달되면 요소 내용에 대해 부분 대/소문자를 구분하는 매치가 수행됩니다. 대/소문자를 구분하지 않는 매치를 수행하려면 정규 표현 식을 사용합니다.
toHaveValue()
폼 컨트롤 요소에 지정 된 값이 있는지 여부를 검사합니다.
toHaveDisplayValue()
폼 컨트롤 요소에 지정 된 표시 값(사용자에게 보여지는 값)을 포함하는 지 여부를 검사합니다.
toBeChecked()
폼 컨트롤(radio, checkbox) 요소가 체크된 상태인 지 여부를 검사합니다.
toBePartiallyChecked()
폼 컨트롤(checkbox) 요소가 부분적으로 체크되었는 지 여부를 검사합니다.
toHaveDescription()
요소에 설명이 있는 지 여부를 검사합니다. aria-describedby 속성에 연결된 요소가 설명 내용을 포함합니다.
Last updated
Was this helpful?