<aside> ❗ JS 테스팅 프레임워크인 jest 를 통한 JS, 리액트의 컴포넌트 등의 로직을 테스트

</aside>

jest 설치

npm i -D jest

npx jest --watchAll  // 파일의 코드가 변경될 때마다 자동으로 테스트한다.

test()

describe("테스트 묶음 1", () => {

  **test**("테스트 1", () => {
    expect(1 + 2).toBe(3)
  })
  
  **it**("테스트 2", () => {
    expect(1 * 2).toBe(2)
  })

})

expect의 다양한 matcher 함수

expect({ age: 30 }).**toEqual**({ age: 30 })  // 객체 간의 비교

expect('hello').**toHaveLength**(5)  // 문자열의 길이 테스트

expect({ name: 'mark' }).toHaveProperty('name', 'mark')  // 객체의 속성과 속성값 비교

expect({ name: 'mark' }.name).toBeDefined()  // 값의 존재 여부 비교
expect({ name: 'mark' }.age).toBeDefined()  // 에러

expect('').toBeFalsy()  // falsy 여부 비교
expect('있음').**not**.toBeFalsy()
expect(NaN).toBeFalsy()
expect(null).toBeFalsy()

React Testing Library

it('RTL', () => {
	// 쿼리 함수 뽑아 내기
	const { getByText } = render(<MyBotton />)
	// 쿼리 함수로 특정 요소 찾기
	const btn = getByText('버튼')
	// jest-dom matcher(DOM 에 특화된 matcher) 를 통해 요소 테스트하기 
	expect(btn).toBeDisabled()
	// fireEvent 객체로 특정 요소에 이벤트 부여하기
	fireEvent.click(btn)
})