본문 바로가기

리액트 테스트

(3)
리액트 테스트 : Context API 테스트와 커스텀 렌더 함수 사용하기 TLDR : UI 사용자가 관심 없는 건 구현 상세입니다. 컨텍스트를 사용하는 컴포넌트를 테스트하려면 wrapper가 필요합니다. (ThemeProvider, Router, Authentication) 우리가 UI를 테스트 하는 이유는, bad ux(사용자 관점 버그)를 막기 위함입니다. 따라서 테스트 코드는 UI적인 관점만 드러나면 좋습니다. 코드가 아닌 사용자의 행동으로 UI가 변해야 하는 경우 act 함수를 통해 명시한 것도 비슷한 맥락입니다. 따라서, render 관련한 함수도, 유틸로 분리합니다. 테마를 테스트 하는 코드 얼핏 보면 렌더가 뭔가 이상합니다. 이는 컨텍스트를 테스트의 관심사에서 제외해 버렸기 때문입니다. 대신 테스트 자체에 좀 더 집중할 수 있습니다. (테마의 변경) https:..
리액트 테스트 : React Testing Library로 Counter 테스트하기 React Testing Library는 상용구 제거, 테스트 환경 자동 초기화 등 다양한 기능을 제공합니다. React Testing Library는 DOM Testing Library의 React 구현입니다. (다른 구현으로는 React Native Testing Library 등이 있습니다). 이전 게시물에서 작성한 코드 변경하기 돔 생성 보일러플레이트 제거 이벤트 보일러플레이트 제거 테스트 환경 초기화 보일러플레이트 제거 import * as React from 'react' import {render, fireEvent} from '@testing-library/react' import Counter from '../../components/counter' test('counter increme..
8. 커스텀 훅 테스트 https://github.com/kentcdodds/testing-react-apps.git TLDR : 훅은 구현상세다. 훅은 리액트 컴포넌트 내에서 호출해야한다. 즉, 훅의 동작은 컴포넌트의 상태 반영을 통해서만 테스트 가능하다. 사용자는 컴포넌트에만 관심있다. 즉 훅은 구현 상세이므로, 테스트를 지양해야 한다. 공통 훅을 만들어 라이브러리로 제공하는 경우가 아니면... 1. 가장 기본적인 테스트 딱히 구현을 보여주지 않아도 어떤 테스트인지 알 수 있다. function UseCounterHookExample() { const {count, increment, decrement} = useCounter() return ( Current count: {count} Decrement Increment ..