반응을 테스트하는 방법을 알고 싶다면 적절한 장소에 있습니다. 코드가 무엇을 해야하는지 당신의 코드가 정말로 알고 있습니까? 브라우저에서 테스트 했습니까? 당신이하지 않았거나 모든 것을 테스트 할 수 없다면, 그것은 생산에서 깨지 않습니까?
테스트 라이브러리는 응용 프로그램 구성 요소에 대한 개별 테스트를 작성하는 데 사용하는 유틸리티 개발자 그룹입니다. 테스트의 원리 부분 중 일부는 다음과 같습니다.
기술:
테스트가 무엇인지 설명합니다
사용 / 렌더링 :
테스트 할 수있는 환경에서 구성 요소를 사용합니다.
조롱 :
가정을 확인할 수 있도록 척수 기능을 만듭니다.
이 기사의 과정에서 코드 출력의 견고성을 향상시킬뿐만 아니라 코드 출력의 견고성을 향상시킬 수있는이 중요한 방법을 시작할 수 있도록 React 테스트 라이브러리의 일부 예제를 탐색 할 것입니다. 일단 생산에 빠지면 더러운 놀라움을 펼친다.
더 유용한 자원을 원하십니까? 여기에 최고의 런던이 있습니다
웹 디자인 도구
그 주위는 당신이 더 똑똑한 일을 도울 것입니다. 또는 새 컴퓨터가 필요한 경우이 반환을 시도하십시오.
프로그래밍을위한 최고의 노트북
...에 또는 새로운 사이트를 구축하는 경우, 당신은 훌륭한 것을 필요로 할 수 있습니다.
웹 사이트 빌더
...에
01. 반응 테스트 라이브러리로 시작하십시오
이미 테스트 라이브러리로 미리 구성되어 있기 때문에이 데모에 대해 CREATE-REAST-APP를 사용할 것입니다. GATSBY 또는 사용자 정의 설정을 사용하는 경우 테스트 라이브러리를 사용하기 전에 실행 해야하는 구성이있을 수 있습니다.
시작하려면 새 앱을 만드십시오. Node.js의 최근 버전이 이미있는 경우 전역으로 다른 항목을 설치하지 않고 다음 명령을 실행할 수 있습니다.
npx create-react-app netmag-javascript-testing
02. 테스트 할 수 있는지 결정하십시오
간단한 구성 요소가 있음을 상상해보십시오. 이와 같은 구성 요소에서 테스트가 필요한 일부는 무엇입니까?
●
구성 요소의 모양 :
우리는 우리의 구성 요소를 작성한 후에 예기치 않게 변화 할 것을 원하지 않습니다. 그래서 우리는 스냅 샷 테스트를 작성하여 그것이 어떻게 렌더링하는지 캡처 할 것입니다. 그런 다음 아무 것도 변경하면 수동 또는 시각적 테스트 없이는 신속하게 볼 수 있습니다. 이것은 많은 작은 구성 요소로 구성된 구성 요소에게 훌륭합니다. 즉, 외관이 영향을받을 때 (그리고 어디에서) 빨리 볼 수 있습니다.
●
렌더링하는 다른 가지 :
우리는 두 가지 이상의 다른 출력을 가질 수 있었기 때문에 우리는 그 중 하나뿐만 아니라 모든 것을 올바르게 렌더링하는 것이 필요합니다. 따라서 Click 이벤트를 시뮬레이트 하고이 코드 분기가 실행 된 후 렌더링하는 방식에 대해 다른 스냅 샷 테스트가 필요합니다.
●
그 기능은 예상대로 호출됩니다.
우리는 우리가 다른 함수를 호출하기 위해 쓴 코드가 우리가 가정 할 때 다른 함수를 호출하도록 썼는지 확인하고 싶습니다. 그러나 함수는 외부 의존성이므로 여기에서 테스트하고 싶지 않습니다. 우리의 테스트는 우리가 원하는 기능 만 캡슐화해야합니다.
첫 번째 테스트를 작성해 봅시다. 새 파일을 만듭니다
mycomponent.unit.test.js.
구성 요소와 동일한 폴더에 있습니다. End에서 Test.js를 추가하면 테스트 라이브러리가 자동으로 선택됩니다. 해당 파일의 내용은 다음과 같습니다.
수입 반응 '반응'
'@ testing-library / React'에서 {render} 가져 오기}
'./mycomponent'에서 myComponent 가져 오기
( '& lt; myComponent / gt;', '{
// tests는 여기에서 이동합니다
})
당신의 관심을 끌고 싶은 첫 번째 일은
묘사 ()
두 개의 인수를 취하는 기능 : 첫 번째는 텍스트의 문자열로 사용하는 데 사용할 수있는 문자열입니다. - 테스트가 수행 할 수있는 문자열입니다. 우리의 경우에 우리는 단순히 그것이 렌더링해야한다고 말했습니다. 이것은 다른 누군가가 귀하의 코드를 보거나 나중 단계에서 무엇을했는지 기억해야 할 때 매우 유용합니다. 좋은 묘사 진술 작성문은 코드 문서의 한 형태이며 테스트를 작성하는 또 다른 좋은 이유입니다.
두 번째 인수는 테스트입니다. 그만큼
묘사 ()
함수는 다른 모든 테스트를 모두 실행합니다.
04. 정리 기능을 사용하십시오
헬퍼 함수를 소개합시다
사전 ()
...에 우리는 구성 요소로 무언가를 수행 할 때마다 우리는 이전에 구성 요소에 아직도 존재하지 않고 우리가 아직도 통과 한 소품없이 신선한 사본을 원하기 때문에이를 사용해야합니다. 또는 구성 요소를 다시 렌더링해야 할 수도 있습니다.
사전 ()
우리는 그것을 위해 그것을 위해 우리는 그것을 정리 함수를 전달할 수 있습니다.
'@ 테스트 라이브러리 / 반응'에서 {렌더링, 정리} 가져 오기 '
...에 ...
묘사 ( '구성 요소가 render', () {& gt;
사전 (정리)
}
기술 ( '구성 요소가 render', () = & gt;
사전 (정리)
( '기본 소품을 렌더링 () = {
렌더링 (& lt; myComponent / gt;)
})
}
이 렌더링은 컴파일 된 구성 요소의 렌더링 된 모든 속성에 대한 액세스를 제공합니다. 이것을 A로 떨어 뜨리는 것이 좋을 것입니다
console.log ()
그래서 당신은 더 명확하게하는 것을 볼 수 있습니다.
그렇게하면 여기서 이용할 수있는 몇 가지 유용한 속성이 있음을 알 수 있습니다. 저는 어설 션을 만들고 (테스트 가능한 선언을하십시오) 컨테이너를 추출하여 테스트 할 것입니다. 컨테이너는 구성 요소와 연관된 DOM 노드 (모든 HTML)를 포함합니다.
이제 우리는 컨테이너에 접근 할 수 있습니다. 내 어설 션에 따라 렌더링되었다고 어떻게 알 수 있습니까? 스냅 샷 테스트를 추가합니다.
스냅 샷을 사진과 같이 생각하십시오. 특정 시점에서 우리 구성 요소의 스냅 샷을 사용합니다. 그런 다음 코드를 변경할 때마다 여전히 원래 스냅 샷과 일치하는지 알 수 있습니다. 그렇다면 구성 요소에서 아무 것도 변경되지 않았다고 확신 할 수 있습니다. 그러나 그렇지 않은 경우, 우리는 이전에 발견되지 않은 다른 구성 요소에서 유래 된 문제를 발견했을 것입니다.
06. 테스트 속성
부품의 소품 또는 속성을 스냅 샷으로 테스트 할 수 있습니다. 구성 요소에 제공 한 다른 소품을 테스트하면 커버리지와 확신을 제공합니다. 요구 사항이 귀하의 부품의 소품이 리팩토링되고 최종 출력이 변경 될지를 의미하는 경우를 알 수 없습니다.
우리의 구성 요소가 버튼이 있고 버튼을 클릭 할 때 무언가가 발생했는지 확인하려고합니다. 응용 프로그램의 상태를 테스트하고 싶을 것으로 생각할 수 있습니다. 예를 들어 상태가 업데이트되었음을 테스트하는 데 유사 할 수 있습니다. 그러나 이러한 테스트의 대상이 아닙니다.
이것은 테스트 라이브러리를 사용하는 데 중요한 개념을 소개합니다. 우리는 현재 상태를 테스트하거나 구성 요소가 작동하는 방식을 테스트하지 않습니다. 우리는 사람들이 구성 요소를 사용하고 기대치를 충족시키는 방법을 테스트합니다.
그렇지 않으면 상태가 업데이트되었는지 여부는 중요하지 않습니다. 우리가 테스트하고 싶은 것은 그 버튼의 결과가 무엇인지입니다.
어두운 모드에서 광 모드로 UI를 변경하는 함수의 결과를 테스트하고 있습니다. 다음은 구성 요소입니다.
이것은 훌륭합니다 : 우리는 수동으로 사이트로 이동하여 주변을 둘러싸고, 버튼을 클릭하고 두 번째로 둘째로보아야합니다. 그 기간 동안, 당신은 잊거나 잊을 수 있습니다! 이제 우리는 동일한 입력을 감안할 때, 우리는 우리의 구성 요소에서 동일한 출력을 기대할 수 있다는 확신을 가질 수 있습니다.
ID를 테스트 할 때, 나는 개인적으로 싫어합니다.
데이터 검사
DOM에서 뭔가를 찾으려면. 결국, 테스트 대상은 사용자가 무엇을하고 있는지를 모방하고 할 때 일어나는 일을 테스트하는 것입니다.
데이터 검사
속임수의 약간의 기분이 느껴집니다 - 데이터 검사가 QA 엔지니어에게 편리하게 될 것입니다 (품질 보증 엔지니어의 역할을 참조하십시오).
대신, 우리는 사용할 수 있습니다
getBytext ()
우리 버튼의 텍스트를 통과하십시오. 그 방법은 훨씬 더 많은 동작이 될 것입니다.
08. 조롱과 스파이 기능
때로는 함수에 대한 호출을 테스트해야 할 수도 있지만 함수는 테스트 범위를 벗어납니다. 예를 들어, PI의 값을 특정 소수점으로 계산하는 함수가 포함 된 별도의 모듈이 있습니다.
해당 모듈의 결과가 무엇인지 테스트 할 필요가 없습니다. 내 기능이 예상대로 수행하는 것을 테스트해야합니다. 이것이 이유에 대한 자세한 내용은 상자 단위 및 통합 테스트를 참조하십시오. 이 경우, 우리는 그 기능을 '모의'할 수 있습니다.
쓰기 테스트는 약간의 어려움을 겪을 수 있습니다. 이 튜토리얼은 당신에게 그것을 시도하기 위해 조금 더 확신을 주었으면 좋겠습니다. 나는 신청서에 대한 테스트를 작성하기 시작한 이래로, 나는 정말로 돌아갈 수 없다 : 나는 미래에 내 일을 사용하는 사람들을 위해 훨씬 더 나은 유산을 떠나는 것을 아는 것을 아는 것을 알고, 나는 쉬울 수있다.