에러 메시지에서 볼 수 있다시피 jest.mock에서는 범위 바깥의 변수를 함부로 참조할 수 없다. 이러한 에러가 발생하는 이유는 jest의 모킹이 모듈 최상단으로 호이스팅되기 때문이다. 그렇기 때문에 jest.mock( )시점에서 봤을 때 해당 변수는 존재하지 않기 때문에 Reference Error이 발생하는 것이다.
해결 방법은 에러 메시지의 마지막 부분에서 찾을 수 있다. 간단하게 참조할 변수의 이름 앞에 mock를 붙여주면 된다.
다음 예시는 카테고리의 목록을 fetch한 후 그 목록을 보여주는 Categories 컴포넌트의 테스트 코드이다. 실제로 fetch 작업을 수행할 필요는 없기 때문에 testUtils 파일에 미리 정의해놓은 가짜 카테고리 목록을 가져와서 보여주기로 했다. 그러나 그냥 testState.categories를 참조하려면 위와 같은 Reference Error이 발생한다. 앞서 언급한대로 mockCategories 변수를 새롭게 선언해주면 에러가 해결되는 것을 볼 수 있다.
'프론트엔드 기본개념 복습 > 테스트코드' 카테고리의 다른 글
[Jest] TypeError : animate is not a function (0) | 2022.04.17 |
---|---|
[Jest] 비동기 코드 테스트하기 (Jest testing with Asynchronous codes) (0) | 2022.04.14 |
[Jest] jest.spyOn() +window 객체 메소드 모킹하기 (0) | 2022.04.14 |
[Jest] jest.fn( )과 유닛 테스트 모킹 (Mocking in Unit Test) (0) | 2022.04.13 |