
Jest 이해하기: 왜 우리는 이를 가져오지 않아도 되는 걸까요?
React에 새로운 사람들이거나 테스트 프레임워크로 Jest를 사용하려고 할 때, 특이한 점을 눈치챌 수 있습니다. 다른 라이브러리나 모듈과는 달리 Jest를 사용할 때는 명시적으로 어떤 것도 가져올 필요가 없다는 것입니다. 이 문서에서는 Jest가 이와 같은 방식으로 작동하는 이유와 테스트 경험을 어떻게 단순화하는지에 대해 다루겠습니다.
Jest의 내부 동작 원리
@nahanil이 지적한 것처럼, Jest는 Node.js 런타임의 전역 범위를 활용하여 해당 메서드와 객체를 제공합니다. 테스트 파일에 console.log(global)을 추가하여 전역 범위를 검사한다면, Jest의 메서드가 전역 객체에 연결되어 있음을 확인할 수 있습니다.
console.log(global)
이 방식을 통해 Jest는 명시적인 가져오기가 필요하지 않고도 주장, 테스트 러너 및 기타 기능을 손쉽게 제공할 수 있습니다. 그러나 모든 라이브러리나 테스트 프레임워크가 동일한 규칙을 따르는 것은 아닙니다. 예를 들어, ‘assert’ 라이브러리의 주장을 사용하려면 가져와야 합니다.
Jest의 내부 동작 방식에 대해 궁금하고 이 동작에 대한 코드를 보고 싶다면 공식적인 Jest 저장소인 GitHub의 이 위치에서 찾을 수 있습니다.
Jest에서 명시적인 가져오기
Jest의 문서에서는 필요에 따라 명시적인 가져오기를 구현하는 대안도 제공합니다. 공식 문서에서 명시적인 가져오기를 선호한다면 다음과 같은 구문을 사용하여 특정 메서드와 객체를 가져올 수 있습니다:
import { describe, expect, test } from '@jest/globals';
‘@jest/globals’ 모듈에서 명시적으로 가져오기를 통해 원하는 메서드에 접근할 수 있습니다. 이 접근 방식은 명시적인 가져오기 스타일을 선호하는 경우 더 많은 제어권을 제공합니다.
결론
결론적으로 Jest를 React의 테스트 프레임워크로 사용할 때는 명시적으로 어떤 것도 가져올 필요가 없습니다. Jest는 Node.js 런타임의 전역 범위를 활용하여 해당 메서드와 객체를 쉽게 제공합니다. 그러나 명시적인 가져오기 접근 방식을 선호한다면 여전히 ‘@jest/globals’ 모듈에서 특정 메서드를 가져올 수 있습니다.
Jest의 독특한 접근 방식은 가져오기 관리보다는 테스트 작성에 집중할 수 있도록 테스트 과정을 단순화합니다. 기본 동작을 받아들이거나 명시적인 가져오기를 선택하더라도, Jest는 React 애플리케이션에 대한 강력하고 포괄적인 테스트 프레임워크로 남아있을 것입니다.