@testing-library/react
create-react-app을 이용하여 프로젝트를 생성할 때 함께 설치
npm run test
// 원하는 파일만 테스트
npm run test 파일명
import { render, screen } from '@testing-library/react';
import Title from "./Title";
describe("Title Component Test", () => {
it('렌더 확인', () => {
// 1. 렌더
render(
<Title size="large">제목</Title>
);
// 2. 확인
expect(screen.getByText('제목')).toBeInTheDocument();
});
});
describe
: 관련된 테스트들을 그룹화하는 함수
it
을 사용하여 테스트 코드 작성it
: 하나의 테스트를 정의하는 역할
render
: React 컴포넌트를 렌더링하는 함수
screen
: DOM 요소에 접근하고 검증하는 데 사용되는 객체
expect
: 검증을 수행하는 함수
getByText
: DOM에서 특정 텍스트를 포함한 요소를 검색
forwardRef 함수는 React 컴포넌트에 ref prop을 넘겨서 그 내부에 있는 HTML 엘리먼트에 접근하게 해주는 함수
import React, { ForwardedRef } from "react";
const InputText = React.forwardRef(({ placeholder, inputType, onChange, ...props }: Props, ref: ForwardedRef<HTMLInputElement>) => {
return (
<InputTextStyle placeholder={placeholder} ref={ref} type={inputType} onChange={onChange} {...props} />
);
});
react-hook-form은 uncontrolled 방식의 빠른 성능을 가지고 있는 폼 관리 라이브러리
npm install react-hook-form
const {
register,
handleSubmit,
formState: { errors }
} = useForm<SignupProps>();
register를 통해 특정 변수명의 객체를 생성할 수 있고, useForm() 함수를 통해 해당 input 태그의 변화를 계속 주시
form이 onSubmit 되었을 때 호출하도록 하는 함수
useNavigate는 특정 이벤트가 실행되었을 때 페이지를 이동하는 경우 사용
import { useNavigate } from "react-router-dom";
function Signup() {
const navigate = useNavigate();
const onSubmit = (data: SignupProps) => {
signup(data).then((res) => {
showAlert("회원가입이 완료되었습니다.");
navigate("/login");
});
};
form을 제출하게 되면 /login
페이지로 이동
navigate(-1)
: 인자가 음수이면 이전 페이지, 양수이면 다음 페이지로 이동