jest/no-restricted-matchers 스타일
작동 방식
특정 매처 및 수식어 사용을 금지하고, 대안을 제안할 수 있습니다.
왜 나쁜가요?
코드베이스 내에서 여러 이유로 일부 매처 또는 수식어를 권장하지 않을 수 있습니다: 해당 기능이 폐기되었을 수 있고, 혼란을 유발할 수 있으며, 성능에 부정적 영향을 미칠 수 있으며, 더 좋은 대안이 존재할 수도 있습니다. 이 규칙을 통해 특정 Jest 매처를 제한하고 선호되는 대안에 대한 안내를 제공함으로써 일관된 테스트 패턴을 강제할 수 있습니다.
예시
금지 항목은 맵 형태로 표현되며, 값은 표시할 메시지 문자열이거나, 기본 규칙 메시지만 사용하려는 경우 null입니다. 금지는 expect 체인의 시작 부분에 대해 확인됩니다 — 즉, 특정 매처를 완전히 금지하려면 여섯 가지 모든 순서를 지정해야 하지만, 수식어도 금지할 수 있습니다. 기본적으로 이 맵은 비어있으며, 이는 어떤 매처나 수식어도 금지되지 않음을 의미합니다.
예시 설정:
{
"jest/no-restricted-matchers": [
"error",
{
"toBeFalsy": null,
"resolves": "대신 `expect(await promise)`를 사용하세요.",
"toHaveBeenCalledWith": null,
"not.toHaveBeenCalledWith": null,
"resolves.toHaveBeenCalledWith": null,
"rejects.toHaveBeenCalledWith": null,
"resolves.not.toHaveBeenCalledWith": null,
"rejects.not.toHaveBeenCalledWith": null
}
]
}위 설정과 함께 잘못된 코드 예시:
it("는 거짓이다", () => {
// 만약 이에 수식어가 있으면(예: `not.toBeFalsy`), 문제가 없음
expect(a).toBeFalsy();
});
it("해결된다", async () => {
// 이 수식어의 모든 사용은 허용되지 않음, 매처와 무관하게
await expect(myPromise()).resolves.toBe(true);
});
describe("오류가 발생했을 때", () => {
it("파일을 업로드하지 않는다", async () => {
// 이 매처의 모든 사용은 허용되지 않음
expect(uploadFileMock).not.toHaveBeenCalledWith("file.name");
});
});이 규칙은 eslint-plugin-vitest와 호환됩니다. 이를 사용하려면 .oxlintrc.json에 다음 설정을 추가하세요:
{
"rules": {
"vitest/no-restricted-matchers": "error"
}
}구성
이 규칙은 다음 속성을 가진 구성 객체를 수락합니다:
restrictedMatchers
type: Record<string, string>
기본값: {}
사용자 정의 메시지를 제공할 제한된 매처/수식어 목록입니다.
키는 매처/수식어 이름(예: "toBeFalsy", "resolves", "not.toHaveBeenCalledWith")입니다.
값은 매처/수식어가 사용될 때 표시할 선택적 사용자 정의 메시지입니다.
사용 방법
설정 파일이나 명령줄 인터페이스를 통해 이 규칙을 활성화하려면 다음을 사용하세요:
{
"plugins": ["jest"],
"rules": {
"jest/no-restricted-matchers": "error"
}
}oxlint --deny jest/no-restricted-matchers --jest-plugin