Skip to content
← Back to rules

jest/prefer-spy-on 스타일

An auto-fix is available for this rule.

작동 방식

함수를 속성의 값을 덮어쓰는 방식으로 모킹할 경우, 정리 작업 시 원래 구현을 수동으로 복원해야 합니다. 그러나 jest.spyOn()을 사용하면 Jest가 변경 사항을 추적하고, jest.restoreAllMocks(), mockFn.mockRestore() 또는 Jest 구성에서 restoreMockstrue로 설정하여 이를 복원할 수 있습니다.

참고: jest.spyOn()으로 생성된 모크는 여전히 원본 함수와 동일하게 동작합니다. 원본 함수는 mockFn.mockImplementation() 또는 다른 몇 가지 모크 함수를 통해 덮어쓸 수 있습니다.

왜 문제가 될까?

모킹 함수로 직접 속성을 덮어쓰는 것은 정리 작업 문제와 테스트 격리 문제를 유발할 수 있습니다. 속성에 수동으로 모크를 할당하면 원래 구현을 복원하는 책임이 생기며, 이를 잊기 쉽고 다른 테스트가 서로 영향을 미칠 수 있습니다. jest.spyOn()을 사용하면 자동 정리 기능을 제공하여 테스트의 신뢰성을 높입니다.

예시

이 규칙에 대한 잘못된 코드 예시:

javascript
Date.now = jest.fn();
Date.now = jest.fn(() => 10);

이 규칙에 대한 올바른 코드 예시:

javascript
jest.spyOn(Date, "now");
jest.spyOn(Date, "now").mockImplementation(() => 10);

이 규칙은 eslint-plugin-vitest와 호환되며, 이를 사용하려면 다음 구성 내용을 .oxlintrc.json에 추가하세요:

json
{
  "rules": {
    "vitest/prefer-spy-on": "error"
  }
}

사용 방법

구성 파일 또는 명령줄을 통해 이 규칙을 활성화하려면 다음을 사용하세요:

json
{
  "plugins": ["jest"],
  "rules": {
    "jest/prefer-spy-on": "error"
  }
}
bash
oxlint --deny jest/prefer-spy-on --jest-plugin

참고 자료