Jest의 `expect` 함수 사용법: JavaScript 테스트의 핵심

2021. 7. 3. 01:43Tech Insights/개발 잡소리

반응형

Jest는 JavaScript에서 매우 인기 있는 테스트 프레임워크입니다. Jest를 사용하면 코드의 동작을 정확하게 검증할 수 있는 강력한 테스트 환경을 만들 수 있습니다. 그중에서 핵심적인 역할을 하는 것이 바로 expect 함수입니다. expect 함수는 테스트에서 값을 검증할 때 사용되며, 다양한 매처(matcher)를 통해 값이 예상대로 동작하는지 확인할 수 있습니다.

이번 글에서는 Jest의 expect 함수 사용법과 함께, 자주 사용되는 매처들에 대해 알아보겠습니다.


1. expect 함수란?

expect 함수는 Jest에서 제공하는 핵심 API로, 테스트하려는 값을 전달하고, 해당 값이 예상되는 결과와 일치하는지 검증하는 역할을 합니다. 간단히 말해, "이 값이 내가 원하는 값일까?"를 물어보는 함수입니다.

기본 사용법

expect(value)
  • value는 테스트하려는 값입니다. expect는 이 값에 대해 다양한 검증을 할 수 있도록 합니다.

2. 매처(Matcher) 사용하기

expect와 함께 사용하는 매처(Matcher)는 값이 예상한 대로 동작하는지 확인하는 기능을 제공합니다. Jest에서 제공하는 매처는 아주 많지만, 그 중 몇 가지 자주 사용되는 매처를 소개하겠습니다.

2.1. toBe: 정확한 일치

toBe는 가장 기본적인 매처로, 값이 정확히 일치하는지 확인할 때 사용합니다. 주로 원시 값(primitive value) 비교에 사용됩니다.

예시

test('2 + 2는 4와 같아야 한다', () => {
  expect(2 + 2).toBe(4);
});
  • expect(2 + 2).toBe(4)2 + 2가 정확히 4와 같은지를 검증합니다.

2.2. toEqual: 객체나 배열의 일치

toEqual은 값이 깊은 비교(deep equality)가 필요한 경우 사용합니다. 객체나 배열처럼 참조형 데이터가 포함된 경우, 모든 속성 값이 일치하는지 재귀적으로 확인합니다.

예시

test('객체는 속성이 일치해야 한다', () => {
  expect({ a: 1 }).toEqual({ a: 1 });
});
  • expect({ a: 1 }).toEqual({ a: 1 })는 객체의 모든 속성 값이 동일한지 확인합니다.

2.3. toBeTruthytoBeFalsy: 진리값 확인

toBeTruthy는 값이 truthy(참)인지 확인하고, toBeFalsy는 값이 falsy(거짓)인지 확인합니다. 이 매처들은 값이 Boolean으로 변환됐을 때 참/거짓으로 평가되는지 확인할 때 유용합니다.

예시

test('값이 truthy인지 확인', () => {
  expect('hello').toBeTruthy();
});

test('값이 falsy인지 확인', () => {
  expect(null).toBeFalsy();
});
  • expect('hello').toBeTruthy()'hello'가 truthy한 값임을 확인합니다.
  • expect(null).toBeFalsy()null이 falsy한 값임을 확인합니다.

2.4. toBeGreaterThan, toBeLessThan: 비교 연산

숫자나 다른 값을 비교할 때는 toBeGreaterThantoBeLessThan을 사용하여 값이 서로 크거나 작은지 확인할 수 있습니다.

예시

test('숫자 비교', () => {
  expect(10).toBeGreaterThan(5);
  expect(5).toBeLessThan(10);
});
  • expect(10).toBeGreaterThan(5)는 10이 5보다 큰지 확인합니다.
  • expect(5).toBeLessThan(10)은 5가 10보다 작은지 확인합니다.

2.5. toContain: 배열이나 문자열에 포함 여부 확인

toContain은 배열이나 문자열에 특정 값이 포함되어 있는지 확인할 때 사용합니다.

예시

test('배열에 값이 포함되어 있는지 확인', () => {
  expect([1, 2, 3]).toContain(2);
});

test('문자열에 값이 포함되어 있는지 확인', () => {
  expect('hello world').toContain('world');
});
  • expect([1, 2, 3]).toContain(2)는 배열에 2가 포함되어 있는지 확인합니다.
  • expect('hello world').toContain('world')는 문자열에 'world'가 포함되어 있는지 확인합니다.

3. 예시: 여러 매처 활용

test('복합적인 테스트', () => {
  const result = 2 + 2;

  expect(result).toBe(4); // 정확한 값 확인
  expect(result).toBeGreaterThan(3); // 비교 확인
  expect(result).toBeLessThan(5); // 비교 확인
});

위 예시는 toBe, toBeGreaterThan, toBeLessThan 매처를 복합적으로 사용하여, result 값이 정확히 4이고, 3보다 크며, 5보다 작다는 것을 동시에 검증합니다.


4. 결론

Jest의 expect 함수는 테스트 작성에서 중요한 역할을 하며, 다양한 매처를 통해 값을 확인할 수 있습니다. toBe, toEqual, toContain 등 여러 매처를 활용하면, 테스트 코드가 더욱 직관적이고 깔끔하게 작성됩니다.

이번 글에서는 expect 함수와 함께 자주 사용되는 매처들에 대해 알아보았습니다. Jest를 활용한 단위 테스트 작성 시, 이 매처들을 적절히 활용하면 더욱 효율적인 테스트 코드 작성이 가능할 것입니다.

더욱 다양한 매처에 대해서는 Jest 공식 문서를 참고하여, 테스트를 작성해보세요!


참고 자료:


이 블로그 글이 도움이 되었기를 바랍니다! 추가적인 질문이나 피드백이 있으면 댓글로 남겨 주세요. 😊

반응형