Jest 사용법 (4) - Matchers

modolee·2020년 9월 22일
4
post-thumbnail

Common Matchers

toBe

  • 정확한 값 일치 여부 확인
test('two plus two is four', () => {
  expect(2 + 2).toBe(4);
});

toEqual

  • 객체(object)의 값 일치 여부 확인
test('object assignment', () => {
  const data = {one: 1};
  data['two'] = 2;
  expect(data).toEqual({one: 1, two: 2});
});

not

  • 불일치 여부 확인
test('adding positive numbers is not zero', () => {
  for (let a = 1; a < 10; a++) {
    for (let b = 1; b < 10; b++) {
      expect(a + b).not.toBe(0);
    }
  }
});

Truthiness

toBeNull

  • null 여부 만 확인

toBeUndefined

  • undefined 여부 만 확인

toBeDefined

  • toBeUndefined의 반대 경우 확인

toBeTruthy

  • true로 취급되는 구문을 확인

toBeFalsy

  • false로 취급되는 구문을 확인
test('null', () => {
  const n = null;
  expect(n).toBeNull();
  expect(n).toBeDefined();
  expect(n).not.toBeUndefined();
  expect(n).not.toBeTruthy();
  expect(n).toBeFalsy();
});

test('zero', () => {
  const z = 0;
  expect(z).not.toBeNull();
  expect(z).toBeDefined();
  expect(z).not.toBeUndefined();
  expect(z).not.toBeTruthy();
  expect(z).toBeFalsy();
});

Numbers

toBeGreaterThan

  • 큰 숫자 여부 확인

toBeGreaterThanOrEqual

  • 같거나 큰 숫자 여부 확인

toBeLessThan

  • 작은 숫자 여부 확인

toBeLessThanOrEqual

  • 같거나 작은 숫자 여부 확인
test('two plus two', () => {
  const value = 2 + 2;
  expect(value).toBeGreaterThan(3);
  expect(value).toBeGreaterThanOrEqual(3.5);
  expect(value).toBeLessThan(5);
  expect(value).toBeLessThanOrEqual(4.5);

  // toBe and toEqual are equivalent for numbers
  expect(value).toBe(4);
  expect(value).toEqual(4);
});

Strings

toMatch

  • 정규식을 이용해서 문자열의 일치 여부 확인
test('there is no I in team', () => {
  expect('team').not.toMatch(/I/);
});

test('but there is a "stop" in Christoph', () => {
  expect('Christoph').toMatch(/stop/);
});

Arrays and iterables

toContain

  • Array 또는 iteration이 가능한 (Set, Map 등...) 객체에 특정 요소 포함 여부를 확인
const shoppingList = [
  'diapers',
  'kleenex',
  'trash bags',
  'paper towels',
  'beer',
];

test('the shopping list has beer on it', () => {
  expect(shoppingList).toContain('beer');
  expect(new Set(shoppingList)).toContain('beer');
});

Exceptions

toThrow

  • 함수 호출 시 에러 발생 여부 확인
  • 단순 에러 및 특정 에러 지정 가능
function compileAndroidCode() {
  throw new Error('you are using the wrong JDK');
}

test('compiling android goes as expected', () => {
  expect(compileAndroidCode).toThrow();
  expect(compileAndroidCode).toThrow(Error);

  // You can also use the exact error message or a regexp
  expect(compileAndroidCode).toThrow('you are using the wrong JDK');
  expect(compileAndroidCode).toThrow(/JDK/);
});
profile
기초가 탄탄한 백엔드 개발자를 꿈꿉니다.

0개의 댓글