React Applications의 구성 요소 테스트는 개발 프로세스의 중요한 부분으로, 각 응용 프로그램의 각 부분이 예상대로 작동하도록합니다. Code Spliting 및 Lazy Loying을 구성 할 수있는 React.lazy를 처리 할 때는 테스트가 조금 더 어려워 질 수 있습니다. 효소 공급 업체로서 개발자가 React.lazy를 사용하여 구성 요소 테스트에 어려움을 겪는 수많은 시나리오를 만났습니다. 이 블로그에서는 효소를 사용하여 React.lazy로 구성 요소를 테스트하기위한 효과적인 전략을 공유하겠습니다.
React.lazy 및 코드 분할 이해
테스트를 시작하기 전에 React.lazy가하는 일을 이해하는 것이 필수적입니다. React.lazy는 동적 가져 오기를 일반 구성 요소로 렌더링 할 수있는 함수입니다. 이는 코드 분할에 특히 유용하며, 필요한 경우에만 구성 요소를로드하여 응용 프로그램의 초기 번들 크기를 줄이는 데 도움이됩니다.
const lazycomponent = react.lazy (() => import ( './ LazyComponent')); 함수 app () {return (<div> <reft.suspense follback = {<div>로드 ... </div>}> <LazyComponent/> </React.suspense> </div>); }
위 코드에서Lazycomponent게으르게로드됩니다REACT.SUSPENSE구성 요소가로드되는 동안 폴백 UI를 표시하는 데 사용됩니다.
테스트 환경 설정
효소를 사용하여 React.lazy로 구성 요소를 테스트하려면 적절한 테스트 환경이 설정되어 있어야합니다. 먼저 필요한 종속성이 설치되어 있는지 확인하십시오. 반응, 효소 및 농담 (또는 다른 테스트 프레임 워크)이 필요합니다.
NPM 설치 -Save-Dev 효소 효소 적응기 -React-16 농담
다음으로 효소를 구성하여 React 버전과 함께 작동합니다. asetuptests.js프로젝트의 루트 디렉토리에 파일을 파일하고 다음 코드를 추가합니다.
'효소'로부터의 효소 수입; 'Enzyme-Adapter-React-16'에서 수입 어댑터; enzyme.configure ({어댑터 : 새 어댑터 ()});
React.lazy로 구성 요소를 테스트합니다
react.lazy로 구성 요소를 테스트 할 때는 명심해야 할 몇 가지가 있습니다. Lazy-Loaded 구성 요소가 비동기식으로로드되므로 테스트에서 로딩 프로세스의 비동기 특성을 처리해야합니다.
폴백 UI 테스트
가장 먼저 테스트 할 수있는 것은 폴백 UI입니다. 게으른로드 구성 요소가로드되면 폴백 UI를 표시해야합니다.
'React'에서 React React; '효소'에서 {mount} 가져 오기; './app'에서 앱 가져 오기; 설명 ( 'app', () => {it ( '게으른 구성 요소가로드되는 동안 폴백 UI를 렌더링해야합니다', () => {const wrapper = mount (<app />); excling (wrapper.find ( 'div'). text ()). tobe ( 'loading ...');});
이 테스트에서 우리는 마운트합니다앱구성 요소 및 폴백 UI가 표시되는지 확인하십시오.
게으른로드 구성 요소 테스트
게으른로드 된 구성 요소 자체를 테스트하려면로드 될 때까지 기다려야합니다. 이를 수행하는 한 가지 방법은 사용하는 것입니다행동React의 테스트 유틸리티에서.
'React'에서 React React; '효소'에서 {mount} 가져 오기; 'react-dom/test-utils'에서 {act} 가져 오기; './app'에서 앱 가져 오기; 설명 ( 'app', () => {it ( '로드 된 후에 게으른 구성 요소를 렌더링해야한다', async () => {let wrapper; at act (async () => {wrapper = mount (<app />);}); wrapper.update (); thrapper.find ( 'lazycomponent')));
이 테스트에서 우리는 사용합니다행동마운팅을 감싸기 위해앱요소. 이를 통해 게으른 부하 구성 요소가 렌더링되는지 확인하기 전에 모든 상태 업데이트 및 부작용이 완료되도록합니다.
게으른 하중의 오류 처리
테스트의 또 다른 중요한 측면은 게으른 부하의 오류를 처리하는 것입니다. 게으른로드 구성 요소를로드하는 동안 오류가있는 경우REACT.SUSPENSE우아하게 처리해야합니다.
'React'에서 React React; '효소'에서 {mount} 가져 오기; 'react-dom/test-utils'에서 {act} 가져 오기; './app'에서 앱 가져 오기; 설명 ( 'app', () => {it ( '게으른 로딩의 오류를 처리해야한다', async () => {const mockerror = new Error ( '부하 구성 요소'); />) 래퍼.
이 테스트에서 우리는 사용합니다이다. 스파이조롱하기 위해react.lazy기능하고 오류를 던집니다. 그런 다음 오류 처리 UI가 표시되는지 확인합니다.
시험을 위해 효소의 특징을 사용합니다
효소는 react.lazy로 구성 요소를 테스트하는 데 유용 할 수있는 몇 가지 기능을 제공합니다. 예를 들어, 사용할 수 있습니다시뮬레이션구성 요소의 이벤트를 트리거합니다.
'React'에서 React React; '효소'에서 {mount} 가져 오기; 'react-dom/test-utils'에서 {act} 가져 오기; './app'에서 앱 가져 오기; 설명 ( 'app', () => {it ( '게으른 구성 요소의 클릭 이벤트를 처리해야합니다', async () => {let 랩퍼; Async () => {wrapper = mount (<app />);}); wrapper.update (); const lazycomponent = wrapper.find ( 'lazycomponent'); expling (lazycomponent.state ( 'clicked'). tobe (true);
이 테스트에서는 게으른로드 구성 요소에 대한 클릭 이벤트를 시뮬레이션하고 구성 요소의 상태가 그에 따라 업데이트되었는지 확인합니다.
결론
효소를 사용하여 React에서 react.lazy를 사용하여 성분을 테스트하려면 효소를 사용하여 React의 비동기 특성을 신중하게 처리해야합니다. 이 블로그에 요약 된 전략을 따르면 구성 요소를 효과적으로 테스트하고 응용 프로그램이 예상대로 작동하는지 확인할 수 있습니다.
효소와 관련된 더 많은 제품을 탐색하는 데 관심이 있다면 개발 공정을 향상시킬 수있는 다양한 고품질 효소 제품을 제공합니다. 다음과 같은 다른 약초 추출물에도 관심이있을 수 있습니다.수용성 실크 피브로인,,,고품질 식품 등급의 피마자 오일/100% 피마자 오일, 그리고고품질 건조 된 오크라 시드 분말/오크라 시드 추출물 분말.
궁금한 점이 있거나 특정 요구 사항에 대해 논의하고 싶다면 조달 토론을 위해 문의하십시오. 프로젝트에 가장 적합한 솔루션을 찾도록 도와 드리겠습니다.
참조
- 코드 분할에 대한 공식 문서에 대한 반응 : https://reactjs.org/docs/code-splitting.html
- 효소 공식 문서 : https://enzymejs.github.io/enzyme/
- Jest 공식 문서 : https://jestjs.io/