Programming/React

TDD 개발 방식 적용하기 2 - React

2023. 3. 20. 12:06
목차
  1. 예제
  2. 프로젝트 생성
  3. My-Button.js
  4. My-Button.test.js
  5. 실행 결과

이번엔 React에서 적용해 보았다.

예제

프로젝트 생성

$ npx create-react-app tdd_test_react
$ cd tdd_test_react

My-Button.js

const MyButton = ({ onClick, disabled, children }) => (
    <button type="button" onClick={onClick} disabled={disabled}>
        {children}
    </button>
);

export default MyButton;

간단한 Button 컴포넌트를 제작한다.

My-Button.test.js

import React from 'react';
import { render, fireEvent, screen } from '@testing-library/react';
import '@testing-library/jest-dom';
import MyButton from './My-Button';

describe('MY-Button', () => {
    // Button 이 텍스트 콘텐츠를 렌더링하는지 테스트.
    test('renders with text content', () => {
        render(<MyButton>Click Me</MyButton>);
        expect(screen.getByText('Click Me')).toBeInTheDocument();
    });

    // Button 클릭 시 onclick props 로 전달된 함수가 호출되는지 확인.
    test('calls onClick function when clicked', () => {
        const onClickMock = jest.fn();
        render(<MyButton onClick={onClickMock}>Click Me</MyButton>);
        const button = screen.getByRole('button');
        fireEvent.click(button); // DOM 이벤트를 시뮬레이션할 때 사용하며, Button 컴포넌트에 등록된 onclick 이벤트가 호출되는지 확인한다.
        expect(onClickMock).toHaveBeenCalled();
    });

    // Button이 Disabled props가 전달되었을 때 비활성화로 렌더링이 잘 되는지 확인
    test('renders as disabled when disabled prop is passed', () => {
        render(<MyButton disabled>Click Me</MyButton>);
        const button = screen.getByRole('button');
        expect(button).toBeDisabled();
    });
});

실행 결과

$ npm run test

# 'react-scripts test'가 실행된다.

정상 동작 확인!

 

저작자표시 (새창열림)
  1. 예제
  2. 프로젝트 생성
  3. My-Button.js
  4. My-Button.test.js
  5. 실행 결과
'Programming/React' 카테고리의 다른 글
  • TDD 개발 방식 적용하기 1 - Javascript
  • TDD 란 무엇인가?
  • Hooks
  • 라이프사이클 메서드란?
Conative
Conative
잘못된 내용이나 부족한 부분 지적 감사히 받겠습니다.
Conative
긍정적인 개발자
Conative
전체
오늘
어제
  • 분류 전체보기 (38)
    • Programming (25)
      • 오답노트 (2)
      • JavaScript (2)
      • TypeScript (2)
      • React (6)
      • Redux (3)
      • PHP (8)
    • System (4)
      • Jenkins (1)
      • Webpack (2)
      • Docker (1)
    • ETC (2)
      • ElasticSearch (2)
    • 계륵 (6)
      • 뭔가 쓰려했는데 잊혀짐 (2)
      • 오래된 대학 책 + 독후감 등 (4)
    • Common (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

최근 글

hELLO · Designed By 정상우.
Conative
TDD 개발 방식 적용하기 2 - React
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.