Skip to content
← Back to rules

jest/no-untyped-mock-factory 스타일

🛠️ An auto-fix is available for this rule for some violations.

작동 방식

mock() 또는 doMock()가 제네릭 타입 매개변수나 반환 타입 없이 사용될 경우 경고를 발생시킵니다.

왜 문제인가요?

기본적으로 jest.mockjest.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

참고 자료