테스트/단위 테스트 (Vue)

단위 테스트 - 비동기 테스트

IT Blue 2021. 9. 4. 10:56

 

단위 테스트 - 비동기 테스트

 

비동기함수

/*	example.js	*/

export function asyncFn() {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve('Done!')
    }, 2000)
  })
}

 

테스트

/*	example.test.js	*/

import { asyncFn } from './example'

describe('비동기 테스트', () => {
  // 비동기 테스트 - 패턴1
  // test() 두번째 인수 콜백으로 done 매개 변수 사용, 함수처럼 실행 가능
  // 비동기가 종료되는 시점에 실행
  test('done', (done) => {
    asyncFn().then(res => {
      expect(res).toBe('Done!')
      done()
    })
  })

  // 비동기 테스트 - 패턴2
  // return 키워드 사용
  // 비동기로 동작해야 한다는 것을 인지
  test('then', () => {
    return asyncFn().then(res => {
      expect(res).toBe('Done!')
    })
  })

  // 비동기 테스트 - 패턴3
  // resolves 브릿지 추가
  // expect() 에 비동기 함수를 실행
  // 주의사항 - return 키워드로 반환
  // test('resolves', () => {
  //   return expect(asyncFn()).resolves.toBe('Done!')
  // })
  test('resolves', () => expect(asyncFn()).resolves.toBe('Done!'))

  // 비동기 테스트 - 패턴4
  // async/await 사용
  // 콜백 자체를 비동기로 만들어서 사용
  test('async/await', async () => {
    const res = await asyncFn()
    expect(res).toBe('Done!')
  })
})