Skip to content

Commit 0d0b7ab

Browse files
committed
feat: ๐Ÿ”จ eslint-plugin-jest ์„ค์ • ์Šคํฌ๋ฆฝํŠธ ์‹ ๊ทœ ์ถ”๊ฐ€
1 parent 43d896b commit 0d0b7ab

1 file changed

Lines changed: 104 additions & 0 deletions

File tree

โ€Žsrc/jest/index.tsโ€Ž

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
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

Comments
ย (0)