1+ /**
2+ * ESLint Jest ํ๋ฌ๊ทธ์ธ ์ค์ ๋ชจ๋
3+ *
4+ * @author RWB
5+ * @since 2025.02.12 Wed 17:02:32
6+ */
7+
8+ import pluginJest from 'eslint-plugin-jest' ;
9+
10+ import type { Linter } from 'eslint' ;
11+
12+ export default {
13+ files : [
14+ '**/*.spec.[jt]s?(x)' ,
15+ '**/*.test.[jt]s?(x)'
16+ ] ,
17+ languageOptions : { globals : pluginJest . environments . globals . globals } ,
18+ plugins : { '@jest' : pluginJest } ,
19+ rules : {
20+ // ์ง์์ด๋ it์ผ๋ก ๊ฐ์ ํจ
21+ '@jest/consistent-test-it' : [
22+ 'error' ,
23+ { fn : 'it' }
24+ ] ,
25+ // ํ
์คํธ ๊ตฌ๋ฌธ์์ ์ด์ฐ์
๋๋ฝ ๋ฐฉ์ง
26+ '@jest/expect-expect' : 'error' ,
27+ // ๋ณ์นญ ๋ฉ์๋๊ฐ ์๋ ๊ณต์ ๋ฉ์๋ ์ฌ์ฉ ๊ฐ์
28+ '@jest/no-alias-methods' : 'error' ,
29+ // ํ
์คํธ ๊ตฌ๋ฌธ ์ฃผ์ ์ฒ๋ฆฌ ๋ฐฉ์ง
30+ '@jest/no-commented-out-tests' : 'error' ,
31+ // ์กฐ๊ฑด๋ถ ํธ์ถ ๋ฐฉ์ง
32+ '@jest/no-conditional-expect' : 'error' ,
33+ // ํผ๋์ค๋ฐ setTimeout ์ฌ์ฉ ๋ฐฉ์ง
34+ '@jest/no-confusing-set-timeout' : 'error' ,
35+ // deprecated ๋ฉ์๋ ์ฌ์ฉ ๋ฐฉ์ง
36+ '@jest/no-deprecated-functions' : 'error' ,
37+ // ๋นํ์ฑํ๋ ํ
์คํธ ์ฌ์ฉ ๋ฐฉ์ง
38+ '@jest/no-disabled-tests' : 'error' ,
39+ // ๋น๋๊ธฐ ํ
์คํธ์์ ์ฝ๋ฐฑ ์ฌ์ฉ ๋ฐฉ์ง
40+ '@jest/no-done-callback' : 'error' ,
41+ // ์ค๋ณต๋ ํ
์คํธ ํ
๋ฐฉ์ง
42+ '@jest/no-duplicate-hooks' : 'error' ,
43+ // export ๋ฐฉ์ง๋ฅผ ํตํด ์ด ๊ทธ์ง๊ฐ์ ์ปดํฌ๋ํธ์ ํ
์คํธ ์ ์ถ ๋ฐฉ์ง
44+ '@jest/no-export' : 'error' ,
45+ // ํ
์คํธ์ only ์ง์์ ์ฌ์ฉ ๋ฐฉ์ง
46+ '@jest/no-focused-tests' : 'error' ,
47+ // ๋๋ช
์ดํ
์คํธ ๋ฐฉ์ง
48+ '@jest/no-identical-title' : 'error' ,
49+ // ์ค๋
์ท์์ ๋ฆฌํฐ๋ด ๋ณ์ ์ฌ์ฉ ๋ฐฉ์ง
50+ '@jest/no-interpolation-in-snapshots' : 'error' ,
51+ // jasmine ์ ์ญ ๋ณ์ ์ ์ธ ๋ฐฉ์ง
52+ '@jest/no-jasmine-globals' : 'error' ,
53+ // mock ์ง์ import ๋ฐฉ์ง
54+ '@jest/no-mocks-import' : 'error' ,
55+ // ๋จ๋
expect ๋ฐฉ์ง
56+ '@jest/no-standalone-expect' : 'error' ,
57+ // ๋ถํ์ํ ํ
์คํธ prefix ๋ฐฉ์ง
58+ '@jest/no-test-prefixes' : 'error' ,
59+ // ํ
์คํธ๋ ์๋ฌด๊ฒ๋ ๋ฐํํ์ง ์์
60+ '@jest/no-test-return-statement' : 'error' ,
61+ // mock์ ๋ฐ๋์ ํ์
์ ์ง์ ํด์ผํจ (JS์์ ๋นํ์ฑํ ํ์)
62+ '@jest/no-untyped-mock-factory' : 'error' ,
63+ // ๊ฐ ๋ธ๋ก ์ฃผ์๋ก ๊ฒฐ๊ณ ํ์ฑ
64+ '@jest/padding-around-all' : 'error' ,
65+ // mock.calls ๋์ toHaveBeenCalledWith() ์ฌ์ฉ
66+ '@jest/prefer-called-with' : 'error' ,
67+ // ๋ด์ฅ๋ ๋น๊ต ๋งค์ฒ ์ฌ์ฉ
68+ '@jest/prefer-comparison-matcher' : 'error' ,
69+ // for๋ฌธ์ ์ง์ ๊ตฌ์ฑํ๋ ๊ฒ๋ณด๋ค .each ์ฌ์ฉ
70+ '@jest/prefer-each' : 'error' ,
71+ // ๋ด์ฅ ๋๋ฑ ๋น๊ต ๋งค์ฒ ์ฌ์ฉ
72+ '@jest/prefer-equality-matcher' : 'error' ,
73+ // Promise๋ฅผ ํตํ ๋น๋๊ธฐ ๋น๊ต๋ resolves ์ฌ์ฉ
74+ '@jest/prefer-expect-resolves' : 'error' ,
75+ // ํ
์ ๋ ฌ
76+ '@jest/prefer-hooks-in-order' : 'error' ,
77+ // jest.mocked ์ฌ์ฉํ์ฌ mocking ๊ฐ์
78+ '@jest/prefer-jest-mocked' : 'error' ,
79+ // ๊ฐ๊ฒฐํ Promise mock ์ ์ธ ๊ฐ์
80+ '@jest/prefer-mock-promise-shorthand' : 'error' ,
81+ // snapshot ํํธ ๊ฐ์
82+ '@jest/prefer-snapshot-hint' : 'error' ,
83+ // ์๊ฒฉํ ๋น๊ต์ธ toStrictEqual ์ฌ์ฉ
84+ '@jest/prefer-strict-equal' : 'error' ,
85+ // ์์๊ฐ ๋น๊ต ์ toBe ๊ธฐ๋ฐ ๋ฉ์๋ ์ฌ์ฉ
86+ '@jest/prefer-to-be' : 'error' ,
87+ // ํฌํจ ์ฌ๋ถ ๋น๊ต ์ toContain ๋ฉ์๋ ์ฌ์ฉ
88+ '@jest/prefer-to-contain' : 'error' ,
89+ // ๊ธธ์ด ๋น๊ต ์ toHaveLength ๋ฉ์๋ ์ฌ์ฉ
90+ '@jest/prefer-to-have-length' : 'error' ,
91+ // ๋น ํ
์คํธ ์ผ์ด์ค์ธ todo ์ฌ์ฉ
92+ '@jest/prefer-todo' : 'error' ,
93+ // throws ์ ์ ์๋ฏธํ ๋ฉ์์ง ์ง์ ๊ฐ์
94+ '@jest/require-to-throw-message' : 'error' ,
95+ // ์ ํจํ describe ์ฝ๋ฐฑ ๋ฉ์๋ ์ฌ์ฉ
96+ '@jest/valid-describe-callback' : 'error' ,
97+ // expect๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌ๋๋๋ก ๊ฐ์
98+ '@jest/valid-expect' : 'error' ,
99+ // Promise๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌ๋๋๋ก ๊ฐ์
100+ '@jest/valid-expect-in-promise' : 'error' ,
101+ // ํ
์คํธ๊ฐ ์ฌ๋ฐ๋ฅธ ํ์ดํ์ ๊ฐ๋๋ก ๊ฐ์
102+ '@jest/valid-title' : 'error'
103+ }
104+ } satisfies Linter . Config ;
0 commit comments