2021-08-25 TIL

고병표·2021년 8월 26일
0

CodeSoom-TIL

목록 보기
9/16

Facts (사실, 객관)

  • Jest랑 친해지는 중.
  • 자바스크립트 기초가 많이 부족한 거 같아 공부를 시작했다.

Feelings (느낌, 주관)

  • 과제를 하긴 했는데 또 마음에 안 든다... 더 열심히 해야겠다.
  • JS 문법을 공부해야겠다는 생각이 들었다.

Findings (배운 점)

test 작성하기 (jest)

  • test / it: 테스트 하나를 작성할 때 사용하는 키워드이다.(하나의 테스트 단위)
  test('socket connect test', (done) => {
      socket.on('connect', () => {
        done();
      });
  });
  • describe: describe 라는 키워드를 사용하여 여러 테스트 케이스를 묶을 수 있다.
describe('socket.io test', () => {
    beforeAll(() => {
      ...
    });

    afterAll(() => {
     ...
    });

    test('socket connect test', (done) => {
      ...
    });

    test('[EMIT] \'enter_room\' event test', (done) => {
      ...
    });
  });

jest 더 알아보기

  • 아래의 Methods들은 모두 scope가 있다. 전역에 쓰면 모든 테스트에 적용되고 하나의 describe안에 넣으면 그 describe안에 있는 test에만 적용된다. 예시는 위의 코드와 같다.

afterAll(fn, timeout): 모든 테스트가 끝나고 한번 실행된다.
afterEach(fn, timeout): 하나의 테스트가 끝날 때 마다 매번 실행된다.
beforeAll(fn, timeout): 모든 테스트가 시작하기 전에 한번 실행된다.
beforeEach(fn, timeout): 하나의 테스트가 시작하기 전에 매번 실행된다.

  • Jest의 Mock 함수는 함수에 전달된 콜백이 호출되었는지 또는 콜백 함수를 트리거 해야 하는 이벤트가 바인딩된 콜백을 트리거 할 때 호출된 콜백을 테스트하는 데 사용할 수 있습니다 .

toBeInTheDocument

<span data-testid="html-element"><span>Html Element</span></span>
<svg data-testid="svg-element"></svg>

expect(
  getByTestId(document.documentElement, 'html-element'),
).toBeInTheDocument()
expect(getByTestId(document.documentElement, 'svg-element')).toBeInTheDocument()
expect(
  queryByTestId(document.documentElement, 'does-not-exist'),
).not.toBeInTheDocument()

toHaveAttribute

  • 주어진 요소에 속성이 있는지 확인.
<button data-testid="ok-button" type="submit" disabled>ok</button>

const button = getByTestId('ok-button')

expect(button).toHaveAttribute('disabled')
expect(button).toHaveAttribute('type', 'submit')
expect(button).not.toHaveAttribute('type', 'button')

expect(button).toHaveAttribute('type', expect.stringContaining('sub'))
expect(button).toHaveAttribute('type', expect.not.stringContaining('but'))

Affirmation(자기 선언)

  • 어렵다고 포기하지 말고 계속 노력하자!!

0개의 댓글