jest/no-untyped-mock-factory 스타일
작동 방식
mock() 또는 doMock()가 제네릭 타입 매개변수나 반환 타입 없이 사용될 경우 경고를 발생시킵니다.
왜 문제인가요?
기본적으로 jest.mock과 jest.doMock는 모크 팩토리에서 어떤 타입도 반환할 수 있도록 허용합니다. 제네릭 타입 매개변수를 사용하면 팩토리가 원래 모듈과 동일한 구조의 객체를 반환하거나 다른 엄격한 타입을 강제할 수 있습니다. 타입을 요구함으로써 소스 모듈이 변경되었을 때 테스트 모크에서 필요한 변경 사항을 타입스크립트로 쉽게 포착할 수 있게 됩니다.
예시
이 규칙에 부적절한 코드 예시:
typescript
jest.mock("../moduleName", () => {
return jest.fn(() => 42);
});
jest.mock("./module", () => ({
...jest.requireActual("./module"),
foo: jest.fn(),
}));
jest.mock("random-num", () => {
return jest.fn(() => 42);
});이 규칙에 적절한 코드 예시:
typescript
// typeof import() 사용
jest.mock<typeof import("../moduleName")>("../moduleName", () => {
return jest.fn(() => 42);
});
jest.mock<typeof import("./module")>("./module", () => ({
...jest.requireActual("./module"),
foo: jest.fn(),
}));
// 사용자 정의 타입 사용
jest.mock<() => number>("random-num", () => {
return jest.fn(() => 42);
});
// 팩토리 없음
jest.mock("random-num");
// 가상 모크
jest.mock(
"../moduleName",
() => {
return jest.fn(() => 42);
},
{ virtual: true },
);사용 방법
이 규칙을 설정 파일 또는 CLI를 통해 활성화하려면 다음을 사용할 수 있습니다:
json
{
"plugins": ["jest"],
"rules": {
"jest/no-untyped-mock-factory": "error"
}
}bash
oxlint --deny jest/no-untyped-mock-factory --jest-plugin