jest/prefer-spy-on 스타일
작동 방식
함수를 속성의 값을 덮어쓰는 방식으로 모킹할 경우, 정리 작업 시 원래 구현을 수동으로 복원해야 합니다. 그러나 jest.spyOn()을 사용하면 Jest가 변경 사항을 추적하고, jest.restoreAllMocks(), mockFn.mockRestore() 또는 Jest 구성에서 restoreMocks를 true로 설정하여 이를 복원할 수 있습니다.
참고: 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