jest 테스트 유닛 사용예 > IT 기술백서

IT 기술백서

직접 알아내거나 검색하기 귀찮아서 모아 둔 것

JavaScript | jest 테스트 유닛 사용예

본문

 

jest unit test 예제

 

타겟소스 

/util/source.js 

[code]

// 값 비교용

exports.addOne = function (a) {

  return parseFloat(a) + 1

}

 

// 객체 비교용

exports.getUser = (id) => ({

  id,

  email: `${id}@gmail.com`,

})

 

// 비동기 함수

exports.fetchUser = (id, cb) => {

  setTimeout(() => {

    console.log('wait 0.1 sec.')

    const user = {

      name: id,

      email: id + '@test.com',

    }

    cb(user)

  }, 100)

}

 

// Promise 함수

exports.fetchPromise = (id) => {

  return new Promise((resolve) => {

    setTimeout(() => {

      console.log('wait 0.1 sec.')

      const user = {

        name: id,

        email: id + '@test.com',

      }

      resolve(user)

    }, 100)

  })

}

[/code]

 

테스트소스

/test/test.js

[code]

const { addOne, getUser, fetchUser, fetchPromise } = require('../utils/source')

 

// toBe: 값(상수)이 일치하는지 테스트

test('인수가 숫자인 경우', () => {

  expect(addOne(1)).toBe(2)

  expect(addOne(7)).toBe(8)

})


test('인수가 문자인 경우', () => {

  expect(addOne('1')).toBe(2)

  expect(addOne('7')).toBe(8)

})


// 값(객체)가 일치하는지 테스트

test('user 확인', () => {

  expect(getUser('hacktam')).toEqual({

    id: 'hacktam',

    email: '[email protected]',

  })

})


// 비동기 함수 테스트

test('비동기 확인', (done) => {

  fetchUser('hacktam', (user) => {

    expect(user).toEqual({

      name: 'hacktam',

      email: '[email protected]',

    })

    done()

  })

})


// Promise 함수 테스트: return 으로 Promise 를 돌려줘야 함

test('Promise 확인', () => {

  return fetchPromise('hacktam').then((user) => {

    expect(user).toEqual({

      name: 'hacktam',

      email: '[email protected]',

    })

  })

})


// async/await 함수 테스트

test('Async 확인', async () => {

  const user = await fetchPromise('hacktam')

  expect(user).toEqual({

    name: 'hacktam',

    email: '[email protected]',

  })

})

 

/* 목업함수 */

// 상수값을 리턴하는 목업함수 사용

const MockFn1 = jest.fn()

MockFn1.mockReturnValue('Hello')


test('Mockup 함수 테스트', () => {

  const value = MockFn1()

  expect(value).toBe('Hello')

})


// Promise를 리턴하는 목업함수 사용

const MockFn2 = jest.fn()

MockFn2.mockResolvedValue('Hi')


test('Mockup Promise 함수 테스트', () => {

  return MockFn2().then((value) => {

    expect(value).toBe('Hi')

  })

})


// 즉석으로 생성해낸 목업함수 사용

const MockFn3 = jest.fn()

MockFn3.mockImplementation((name) => `I am ${name}`)


test('Mockup 실제함수 생성 테스트', () => {

  const name = MockFn3('Brian')

  expect(name).toBe('I am Brian')

})

[/code]

 

댓글 0개

등록된 댓글이 없습니다.

Menu