2021. 7. 3. 01:43ㆍTech 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. toBeTruthy
및 toBeFalsy
: 진리값 확인
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
: 비교 연산
숫자나 다른 값을 비교할 때는 toBeGreaterThan
과 toBeLessThan
을 사용하여 값이 서로 크거나 작은지 확인할 수 있습니다.
예시
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 공식 문서를 참고하여, 테스트를 작성해보세요!
참고 자료:
이 블로그 글이 도움이 되었기를 바랍니다! 추가적인 질문이나 피드백이 있으면 댓글로 남겨 주세요. 😊
'Tech Insights > 개발 잡소리' 카테고리의 다른 글
Monorepo vs Polyrepo: 무엇이 더 나을까? (0) | 2025.01.30 |
---|---|
MSA vs 모놀리틱: 무엇이 더 나을까? (4) | 2025.01.25 |
개발자로서의 권고사직 경험과 그 후의 이야기 (0) | 2022.09.02 |
"Invalid Date" 오류 해결: PR을 통한 오픈소스 기여 (0) | 2021.07.12 |