대응 사이트 및 앱을 테스트하는 방법

Sep 11, 2025
어떻게
Test React
(이미지 크레디트 : 미래)

반응을 테스트하는 방법을 알고 싶다면 적절한 장소에 있습니다. 코드가 무엇을 해야하는지 당신의 코드가 정말로 알고 있습니까? 브라우저에서 테스트 했습니까? 당신이하지 않았거나 모든 것을 테스트 할 수 없다면, 그것은 생산에서 깨지 않습니까?

테스트 라이브러리는 응용 프로그램 구성 요소에 대한 개별 테스트를 작성하는 데 사용하는 유틸리티 개발자 그룹입니다. 테스트의 원리 부분 중 일부는 다음과 같습니다.

  • 기술: 테스트가 무엇인지 설명합니다
  • 사용 / 렌더링 : 테스트 할 수있는 환경에서 구성 요소를 사용합니다.
  • 조롱 : 가정을 확인할 수 있도록 척수 기능을 만듭니다.

이 기사의 과정에서 코드 출력의 견고성을 향상시킬뿐만 아니라 코드 출력의 견고성을 향상시킬 수있는이 중요한 방법을 시작할 수 있도록 React 테스트 라이브러리의 일부 예제를 탐색 할 것입니다. 일단 생산에 빠지면 더러운 놀라움을 펼친다.

더 유용한 자원을 원하십니까? 여기에 최고의 런던이 있습니다 웹 디자인 도구 그 주위는 당신이 더 똑똑한 일을 도울 것입니다. 또는 새 컴퓨터가 필요한 경우이 반환을 시도하십시오. 프로그래밍을위한 최고의 노트북 ...에 또는 새로운 사이트를 구축하는 경우, 당신은 훌륭한 것을 필요로 할 수 있습니다. 웹 사이트 빌더 ...에

01. 반응 테스트 라이브러리로 시작하십시오

이미 테스트 라이브러리로 미리 구성되어 있기 때문에이 데모에 대해 CREATE-REAST-APP를 사용할 것입니다. GATSBY 또는 사용자 정의 설정을 사용하는 경우 테스트 라이브러리를 사용하기 전에 실행 해야하는 구성이있을 수 있습니다.

시작하려면 새 앱을 만드십시오. Node.js의 최근 버전이 이미있는 경우 전역으로 다른 항목을 설치하지 않고 다음 명령을 실행할 수 있습니다.

npx create-react-app netmag-javascript-testing

02. 테스트 할 수 있는지 결정하십시오

간단한 구성 요소가 있음을 상상해보십시오. 이와 같은 구성 요소에서 테스트가 필요한 일부는 무엇입니까?

구성 요소의 모양 :

우리는 우리의 구성 요소를 작성한 후에 예기치 않게 변화 할 것을 원하지 않습니다. 그래서 우리는 스냅 샷 테스트를 작성하여 그것이 어떻게 렌더링하는지 캡처 할 것입니다. 그런 다음 아무 것도 변경하면 수동 또는 시각적 테스트 없이는 신속하게 볼 수 있습니다. 이것은 많은 작은 구성 요소로 구성된 구성 요소에게 훌륭합니다. 즉, 외관이 영향을받을 때 (그리고 어디에서) 빨리 볼 수 있습니다.

렌더링하는 다른 가지 :

우리는 두 가지 이상의 다른 출력을 가질 수 있었기 때문에 우리는 그 중 하나뿐만 아니라 모든 것을 올바르게 렌더링하는 것이 필요합니다. 따라서 Click 이벤트를 시뮬레이트 하고이 코드 분기가 실행 된 후 렌더링하는 방식에 대해 다른 스냅 샷 테스트가 필요합니다.

그 기능은 예상대로 호출됩니다.

우리는 우리가 다른 함수를 호출하기 위해 쓴 코드가 우리가 가정 할 때 다른 함수를 호출하도록 썼는지 확인하고 싶습니다. 그러나 함수는 외부 의존성이므로 여기에서 테스트하고 싶지 않습니다. 우리의 테스트는 우리가 원하는 기능 만 캡슐화해야합니다.

03. 첫 번째 테스트를 작성하십시오

Test React

(이미지 : © Ben Read)

첫 번째 테스트를 작성해 봅시다. 새 파일을 만듭니다 mycomponent.unit.test.js. 구성 요소와 동일한 폴더에 있습니다. End에서 Test.js를 추가하면 테스트 라이브러리가 자동으로 선택됩니다. 해당 파일의 내용은 다음과 같습니다.

 수입 반응 '반응'
'@ testing-library / React'에서 {render} 가져 오기}
'./mycomponent'에서 myComponent 가져 오기
( '& lt; myComponent / gt;', '{
    // tests는 여기에서 이동합니다
}) 

당신의 관심을 끌고 싶은 첫 번째 일은 묘사 () 두 개의 인수를 취하는 기능 : 첫 번째는 텍스트의 문자열로 사용하는 데 사용할 수있는 문자열입니다. - 테스트가 수행 할 수있는 문자열입니다. 우리의 경우에 우리는 단순히 그것이 렌더링해야한다고 말했습니다. 이것은 다른 누군가가 귀하의 코드를 보거나 나중 단계에서 무엇을했는지 기억해야 할 때 매우 유용합니다. 좋은 묘사 진술 작성문은 코드 문서의 한 형태이며 테스트를 작성하는 또 다른 좋은 이유입니다.

두 번째 인수는 테스트입니다. 그만큼 묘사 () 함수는 다른 모든 테스트를 모두 실행합니다.

04. 정리 기능을 사용하십시오

헬퍼 함수를 ​​소개합시다 사전 () ...에 우리는 구성 요소로 무언가를 수행 할 때마다 우리는 이전에 구성 요소에 아직도 존재하지 않고 우리가 아직도 통과 한 소품없이 신선한 사본을 원하기 때문에이를 사용해야합니다. 또는 구성 요소를 다시 렌더링해야 할 수도 있습니다. 사전 () 우리는 그것을 위해 그것을 위해 우리는 그것을 정리 함수를 전달할 수 있습니다.

 '@ 테스트 라이브러리 / 반응'에서 {렌더링, 정리} 가져 오기 '
...에 ...
묘사 ( '구성 요소가 render', () {& gt;
  사전 (정리)
} 

05. 스냅 샷 테스트를 작성하십시오

Test React

(이미지 : © Ben Read)

이 단계에서는 우리의 구성 요소 (또는 렌더링)를 '마운트'할 것입니다.

 기술 ( '구성 요소가 render', () = & gt;
  사전 (정리)
  ( '기본 소품을 렌더링 () = {
    렌더링 (& lt; myComponent / gt;)
  })
} 

이 렌더링은 컴파일 된 구성 요소의 렌더링 된 모든 속성에 대한 액세스를 제공합니다. 이것을 A로 떨어 뜨리는 것이 좋을 것입니다 console.log () 그래서 당신은 더 명확하게하는 것을 볼 수 있습니다.
그렇게하면 여기서 이용할 수있는 몇 가지 유용한 속성이 있음을 알 수 있습니다. 저는 어설 션을 만들고 (테스트 가능한 선언을하십시오) 컨테이너를 추출하여 테스트 할 것입니다. 컨테이너는 구성 요소와 연관된 DOM 노드 (모든 HTML)를 포함합니다.

 그것은 ( '기본 소품으로 렌더링', () {
    const {container} = 렌더링 (& lt; myComponent / gt;)
}) 

이제 우리는 컨테이너에 접근 할 수 있습니다. 내 어설 션에 따라 렌더링되었다고 어떻게 알 수 있습니까? 스냅 샷 테스트를 추가합니다.

스냅 샷을 사진과 같이 생각하십시오. 특정 시점에서 우리 구성 요소의 스냅 샷을 사용합니다. 그런 다음 코드를 변경할 때마다 여전히 원래 스냅 샷과 일치하는지 알 수 있습니다. 그렇다면 구성 요소에서 아무 것도 변경되지 않았다고 확신 할 수 있습니다. 그러나 그렇지 않은 경우, 우리는 이전에 발견되지 않은 다른 구성 요소에서 유래 된 문제를 발견했을 것입니다.

06. 테스트 속성

부품의 소품 또는 속성을 스냅 샷으로 테스트 할 수 있습니다. 구성 요소에 제공 한 다른 소품을 테스트하면 커버리지와 확신을 제공합니다. 요구 사항이 귀하의 부품의 소품이 리팩토링되고 최종 출력이 변경 될지를 의미하는 경우를 알 수 없습니다.

파일 맨 위에 다음 개체를 추가하십시오.

 const lightproperties = {
    BackgroundColour : '화이트',
    TextColour : 'DarkBlue'
} 

우리는 객체의 속성을 정의한 다음 스프레드 연산자 (객체 이름이옵니다. ... lightproperties) 우리 가이 방식으로 렌더링 할 때만 한 주장을 통과 할 수 있기 때문에. 또한 분리 할 속성을 확인하는 것도 유용합니다.

 그것은 ( '기본 소품으로 렌더링', () {
        const {container} = render (& lt; myComponent / gt;
      )
     기대 (컨테이너) .tomatchsNapshot ()
    })
    ( '라이트 버전 소우즈', () {renders, () {
        const {container} = 렌더링 (
            & lt; myComponent {... lightProperties} / & gt;
        )
        기대 (컨테이너) .tomatchsNapshot ()
    })

07. UI의 테스트 변경

우리의 구성 요소가 버튼이 있고 버튼을 클릭 할 때 무언가가 발생했는지 확인하려고합니다. 응용 프로그램의 상태를 테스트하고 싶을 것으로 생각할 수 있습니다. 예를 들어 상태가 업데이트되었음을 ​​테스트하는 데 유사 할 수 있습니다. 그러나 이러한 테스트의 대상이 아닙니다.

이것은 테스트 라이브러리를 사용하는 데 중요한 개념을 소개합니다. 우리는 현재 상태를 테스트하거나 구성 요소가 작동하는 방식을 테스트하지 않습니다. 우리는 사람들이 구성 요소를 사용하고 기대치를 충족시키는 방법을 테스트합니다.

그렇지 않으면 상태가 업데이트되었는지 여부는 중요하지 않습니다. 우리가 테스트하고 싶은 것은 그 버튼의 결과가 무엇인지입니다.

어두운 모드에서 광 모드로 UI를 변경하는 함수의 결과를 테스트하고 있습니다. 다음은 구성 요소입니다.

 const modetoggle = () = & gt; {
    const [모드, setMode] = useState [ 'Light']
   const toggletheme = () = & gt; {
     if (theme === 'light') {
       settheme ( '어둠')
     } else {
       settheme ( '빛')
     }
   }
    반환 (
        & lt; ToggleButton 데이터 - TestID = "Mode-Toggle"lightmode = {mode} onClick = {ToggleMode} & gt;
          토글 모드
        & lt; / togglebutton & gt;
    )
}

첫째, 우리는 렌더 단계에서 찾을 수 있도록 버튼에 테스트 ID를 추가해야합니다.

 반환 (
    & lt; togglebutton.
      데이터 - testID = "Mode-Toggle"
      lightmode = {mode}
      OnClick = {ToggleMode}
     & gt;
      토글 모드
    & lt; / togglebutton & gt;

새 속성을 추가했음을 알았습니까? 데이터 검사 버튼에? 다음은 당신이 그것을 테스트 할 수있는 방법입니다. 첫째, 새로운 기능을 가져오고 테스트 라이브러리에서 Fireevent :

 수입 {정화,
          fireevent,
          세우다
} '@ testing-library / react'에서 '

우리는 해당 기능을 사용하여 UI의 변경 사항이 있고 변경 사항이 일관되게 수행됩니다.

 그것은 ( '기본 소품으로 렌더링', () {
    const {container} = 렌더링 (& lt; togglebutton / & gt;
  )
 기대 (컨테이너) .tomatchsNapshot ()
})
( '클릭', () & gt; {
    const {container, getBytestid} = 렌더링 (& lt; togglebutton / gt;)
    fireevent.click (getByTestID ( '모드 - 토글')))
    기대 (컨테이너) .tomatchsNapshot ()
}) 

이것은 훌륭합니다 : 우리는 수동으로 사이트로 이동하여 주변을 둘러싸고, 버튼을 클릭하고 두 번째로 둘째로보아야합니다. 그 기간 동안, 당신은 잊거나 잊을 수 있습니다! 이제 우리는 동일한 입력을 감안할 때, 우리는 우리의 구성 요소에서 동일한 출력을 기대할 수 있다는 확신을 가질 수 있습니다.

ID를 테스트 할 때, 나는 개인적으로 싫어합니다. 데이터 검사 DOM에서 뭔가를 찾으려면. 결국, 테스트 대상은 사용자가 무엇을하고 있는지를 모방하고 할 때 일어나는 일을 테스트하는 것입니다. 데이터 검사 속임수의 약간의 기분이 느껴집니다 - 데이터 검사가 QA 엔지니어에게 편리하게 될 것입니다 (품질 보증 엔지니어의 역할을 참조하십시오).

대신, 우리는 사용할 수 있습니다 getBytext () 우리 버튼의 텍스트를 통과하십시오. 그 방법은 훨씬 더 많은 동작이 될 것입니다.

08. 조롱과 스파이 기능

때로는 함수에 대한 호출을 테스트해야 할 수도 있지만 함수는 테스트 범위를 벗어납니다. 예를 들어, PI의 값을 특정 소수점으로 계산하는 함수가 포함 된 별도의 모듈이 있습니다.

해당 모듈의 결과가 무엇인지 테스트 할 필요가 없습니다. 내 기능이 예상대로 수행하는 것을 테스트해야합니다. 이것이 이유에 대한 자세한 내용은 상자 단위 및 통합 테스트를 참조하십시오. 이 경우, 우리는 그 기능을 '모의'할 수 있습니다.

 const getPivalue = jest.fn ()
그것 ( '클릭', () = & gt; {
    const {container, getBytestid} = 렌더링 (& lt; togglebutton / gt;)
    fireevent.click (getByTestID ( '모드 - 토글')))
    기대 (GetPivalue) .toHaveBeenCalledTimes (1)
  )
}) 

함수 tohavebeencalledtimes () 테스트 라이브러리에서 많은 도우미 기능 중 하나입니다.

함수의 출력을 테스트합니다. 이를 통해 우리가 테스트하고자하는 모듈에만 테스트를 범위뿐만 아니라 우리가 그 기능을 호출 할 때 우리의 기능이 무엇을 할 수 있는지를 볼 수 있도록 우리가 '스파이'를 볼 수 있음을 의미합니다.

09. 테스트 시작 응용 프로그램에서

Test React

(이미지 : © 반응 테스트 라이브러리)

쓰기 테스트는 약간의 어려움을 겪을 수 있습니다. 이 튜토리얼은 당신에게 그것을 시도하기 위해 조금 더 확신을 주었으면 좋겠습니다. 나는 신청서에 대한 테스트를 작성하기 시작한 이래로, 나는 정말로 돌아갈 수 없다 : 나는 미래에 내 일을 사용하는 사람들을 위해 훨씬 더 나은 유산을 떠나는 것을 아는 것을 아는 것을 알고, 나는 쉬울 수있다.

구성 요소를 테스트하는 방법에 대한 더 많은 아이디어를 보려면 방문하십시오. 테스트 라이브러리를 반응합니다 또는 시험 예제 반응 ...에 시작하는 데 도움이되는 코스를 찾고 있다면, Kent C Dodds의 하나 (대응 테스트 라이브러리를 썼고 유지 관리하는 사람)이 인기가 있습니다. 나는 또한 즐겼다 레벨 업 튜토리얼 에서이 제품 내 코드에 대한 테스트를 작성하기 시작한 것입니다.

복잡한 사이트를 구축한다면, 당신은 당신의 웹 호스팅 서비스 지점에. 그리고 그 사이트가 많은 자산을 포함 할 가능성이있는 경우 신뢰할 수있는 것에 저장 클라우드 스토리지 중요합니다.

이 콘텐츠는 원래 나타났습니다 그물 잡지 ...에 우리를 더 읽으십시오 여기 웹 디자인 기사 ...에

자세히보기 :

  • HTML6 : 그것은 무엇이며 언제 도착합니까?
  • HTML 코드를 더 빨리 작성하십시오
  • 모바일 앱 디자인 : 초보자 가이드

어떻게 - 가장 인기있는 기사

라이온을 그리는 방법

어떻게 Sep 11, 2025

사자를 그리는 방법에 대한 우리 가이드에 오신 것을 환영합니다. 정글의 왕은 세계에서 가장 크고 강력하고 가장 강..


Photoshop의 믹서 브러시 마스터

어떻게 Sep 11, 2025

디지털 페인팅 도구는 지난 몇 년 동안 심각하게 발전했습니다. 아티스트는 정제를 사용하여 집�..


벡터 변위 메쉬 브러시 만들기

어떻게 Sep 11, 2025

놓치지 마라 정점 2018. , CG 커뮤니티에 대한 데뷔 이벤트. 게임, vfx �..


자신만의 WebGL 물리학 게임 만들기

어떻게 Sep 11, 2025

이 프로젝트는 다른 부품으로 나뉩니다. 우리는 Heroku에 대한 짧은 소개를 제공하고, 3.js로 Physijs�..


3D Apps에서 스냅이 작동하는 방식

어떻게 Sep 11, 2025

CGI에서 일하는 핵심 요소 중 하나가 제공 해야하는 것이 더 큰 정밀도입니다. 그러나 디지털 콘텐..


클립 스튜디오 페인트에서 좀비를 칠하는 방법

어떻게 Sep 11, 2025

이 도면 자습서에서는 배울 것입니다 그리는 방법과 페인트 좀비를 사용하여 클..


사진을 VR 세트로 변환

어떻게 Sep 11, 2025

일반적으로 누군가가 보증 된 현실이나 가상 현실을 언급하면 ​​비디오 게임에 대해 생각할 수..


더 몰입 가능한 VR 경험을 창출하는 5 가지 방법

어떻게 Sep 11, 2025

가상 현실은 정확히 새로운 것이 아니라 지난 몇 년 동안 기술이 진정으로 몰입적이고 믿을만한 V..


카테고리