인프런 커뮤니티 질문&답변

Kate님의 프로필 이미지
Kate

작성한 질문수

실무에 바로 적용하는 프런트엔드 테스트 - 1부. 테스트 기초: 단위・통합 테스트

4.3. 상태 관리 모킹하기

4.3. 강의와 깃헙 소스코드가 다른 부분

해결된 질문

작성

·

206

·

수정됨

1

안녕하세요. 강의 잘 듣고 있습니다.

다름이 아니라 강의와 깃헙 소스코드가 달라서 문의드려요.

 

mocks/zustand.js의 코드인데요.

const { create: actualCreate } = await vi.importActual('zustand');
import { act } from '@testing-library/react';

// 앱에 선언된 모든 스토어에 대해 재설정 함수를 저장
const storeResetFns = new Set();

// 스토어를 생성할 때 초기 상태를 가져와 리셋 함수를 생성하고 set에 추가합니다.
export const create = createState => {
  const store = actualCreate(createState);
  const initialState = store.getState();
  storeResetFns.add(() => store.setState(initialState, true));
  return store;
};

// 테스트가 구동되기 전 모든 스토어를 리셋합니다.
beforeEach(() => { // 👈 이 부분
  act(() => storeResetFns.forEach(resetFn => resetFn()));
});

깃헙 소스코드는 위와 같이 beforeEach를 사용하지만 강의에서는 afterEach로 설명해주시고 있습니다.

주석도 마찬가지로 다릅니다.

무엇이 맞는 걸까요?

답변 1

1

코드 조커, 오프님의 프로필 이미지
코드 조커, 오프
지식공유자

안녕하세요! 우선 강의 들어주셔서 감사합니다.

남겨주신대로 내용은 코드를 최종본으로 이해하시고 강의를 진행해주시면 감사하겠습니다.

확인을 해봤더니 이전 편집 내용이 남아 있었던 것 같네요. 😅

결국 해당 내용은 초기화에 목적이 있기 때문에 모든 테스트가 진행된 뒤 호출하거나 진행 전 호출하는 방식으로 진행해주시면 상관 없을 것 같습니다.

감사합니다!

Kate님의 프로필 이미지
Kate
질문자

답변 감사합니다.

조금 헷갈려서 그런데요. '코드를 최종본으로 이해하면 되나, beforeEach든 afterEach든 크게 상관 없다.'라고 이해해도 될까요? :)

코드 조커, 오프님의 프로필 이미지
코드 조커, 오프
지식공유자

안녕하세요!

제가 제대로 이해했는지 정확하지는 않지만 우선 저희가 준비한 강의 의도는 코드 기준이 저희의 의도와 맞으며 afterEach와 beforeEach의 경우 호출되는 컨텍스트와 의도에 따라 달라질 수 있어 구분해 사용해야 합니다!

Kate님의 프로필 이미지
Kate

작성한 질문수

질문하기