react testing 예시

YOUNGJOO-YOON·2021년 9월 24일
0

아래의 코드에 대한

function App() {
  return (
    <Container>
      <Header>
        <AppLogo src={logo} alt='logo' />
        <p>
          Edit <code>src/App.tsx</code> and save to reload.
        </p>
        <AppLink
        href='https://reactjs.org'
        target='_blank'
        rel='noopener noreferrer'
        >
          Learn React
        </AppLink>
      </Header>
    </Container>
  );
}

test code이다.

import React from 'react'
import {render, screen} from '@testing-library/react'
import App from './App'

describe('<App />',()=>{
  it('renders component correctly',()=>{
    const {container} = render(<App />)

    const linkElement = screen.getByText(/learn react/i)
    expect(linkElement).toBeInTheDocument()

    const appLogo = screen.getByAltText('logo')
    expect(appLogo).toBeInTheDocument()
    expect(appLogo).toHaveAttribute('src','logo.svg')

    expect(container.getElementsByTagName('p')).toHaveLength(1)
    expect(container.getElementsByTagName('p')[0]).
    toHaveTextContent(
      'Edit src/App.tsx and save to reload.'
      )
    expect(container).toMatchSnapshot()
  })
})

생소한 것만 짚고 가자

expect(container.getElementsByTagName('p')).toHaveLength(1)

App component를 렌더링 하고 Container에 담아놓은 다음 DOM의 p 태그를 모두 불러와 배열에 담는다

.toHaveLength(n)는 그 배열의 길이를 알아내는 함수이다.


 expect(container.getElementsByTagName('p')[0]).
    toHaveTextContent(
      'Edit src/App.tsx and save to reload.'
      

위와 같이 배열에 담은 p tag의 innerText 값은 아래와 같다고 test 해보는 것이다.

profile
이 블로그의 글은 제 생각을 정리한 글과 인터넷 어딘가에서 배운 것을 정리한 글입니다. 출처는 되도록 남기도록 하겠습니다. 수정 및 건의 오류 등이 있으면 언제든지 댓글 부탁드립니다.

0개의 댓글