เครื่องมือสร้างไฟล์ตั้งค่า Jest
เลือกสแตกของคุณ, TypeScript, React, แบ็กเอนด์ Node หรือ Svelte, แล้วเครื่องมือจะสร้างไฟล์ jest.config.js ที่มีทรานส์ฟอร์เมอร์ที่ถูกต้อง ตัวแมปโมดูล สภาพแวดล้อมสำหรับการทดสอบ และเกณฑ์ความครอบคลุมครบถ้วน รวมถึงทุกตัวเลือกที่ผู้คนมักลืม เช่น moduleNameMapper สำหรับ CSS และรูปภาพ, setupFilesAfterEach, และ testPathIgnorePatterns สำหรับ node_modules และ dist
วิธีสร้างไฟล์ตั้งค่าของ Jest
-
1
เลือกสแตกของคุณ
TypeScript, React, Vue, Svelte, ใช้ Node ล้วน ๆ หรือใช้หลายอย่างผสมกัน, แต่ละแบบจะเติมทรานส์ฟอร์เมอร์ที่ถูกต้องไว้ล่วงหน้าให้
-
2
เลือกสภาพแวดล้อมสำหรับการทดสอบ
jsdom สำหรับโค้ดฝั่งเบราว์เซอร์, node สำหรับแบ็กเอนด์ หรือสภาพแวดล้อมที่กำหนดเอง
-
3
เปิด/ปิดฟีเจอร์
เกณฑ์ความครอบคลุม การทดสอบแบบสแนปช็อต เส้นทางม็อก ไฟล์ setup ที่กำหนดเอง และรูปแบบการยกเว้นการแปลง
-
4
ดาวน์โหลดไฟล์ตั้งค่า
ผลลัพธ์คือไฟล์ `jest.config.js` หรือ `jest.config.ts` ที่มีคำอธิบายประกอบ พร้อมกับสคริปต์ npm ที่คุณควรเพิ่มเข้าไปในไฟล์ `package.json`
ตัวอย่างผลลัพธ์: โปรเจกต์ React + TypeScript
module.exports = {
preset: "ts-jest",
testEnvironment: "jsdom",
setupFilesAfterEach: ["<rootDir>/jest.setup.ts"],
moduleNameMapper: {
"\\.(css|less|scss|sass)$": "identity-obj-proxy",
"\\.(jpg|jpeg|png|gif|svg)$": "<rootDir>/__mocks__/fileMock.js",
"^@/(.*)$": "<rootDir>/src/$1"
},
testPathIgnorePatterns: ["/node_modules/", "/dist/", "/build/"],
transform: {
"^.+\\.tsx?$": ["ts-jest", { tsconfig: "tsconfig.test.json" }]
},
collectCoverageFrom: [
"src/**/*.{ts,tsx}",
"!src/**/*.d.ts",
"!src/**/*.stories.*"
],
coverageThreshold: {
global: { branches: 80, functions: 80, lines: 85, statements: 85 }
}
};
คู่มือการตัดสินใจ: ควรเลือกสภาพแวดล้อมใด?
| โค้ดของคุณทำงานใน… | ใช้ |
|---|---|
| เบราว์เซอร์ (DOM, window) | jsdom (หรือ @happy-dom/jest-environment เพื่อความเร็ว) |
| เซิร์ฟเวอร์ Node | node |
| Service Worker | สภาพแวดล้อมที่กำหนดเอง โดยใช้ node เป็นฐาน |
| React Native | พรีเซ็ต react-native |
ตารางสรุปทรานส์ฟอร์เมอร์
| ประเภทของซอร์ส | ทรานส์ฟอร์เมอร์ |
|---|---|
| TypeScript | ts-jest หรือ @swc/jest |
| JSX ที่คอมไพล์ด้วย Babel | babel-jest (ค่าเริ่มต้น) |
| Vue SFC | @vue/vue3-jest + babel-jest |
| Svelte | svelte-jester |
| รูปภาพแบบสแตติก | ม็อกด้วยตนเองใน moduleNameMapper |
เกณฑ์ความครอบคลุม: ควรใช้ตัวเลขเท่าไหร่?
- เส้นทางสำคัญ/ไลบรารี: บรรทัดมากกว่า 90% สาขามากกว่า 85%
- ทีมพัฒนาฟีเจอร์: บรรทัด 80% สาขา 70%
- UI ที่เปลี่ยนแปลงเร็ว: บรรทัด 60–70% ตั้งเป้าให้สูงขึ้นสำหรับตรรกะทางธุรกิจ และต่ำลงสำหรับเลย์เอาต์
- ต้นแบบ (prototype): ปิดใช้งานเกณฑ์ทั้งหมด แล้วติดตามความครอบคลุมเป็นตัวเลข ไม่ใช่เป็นเกต
ข้อผิดพลาดที่พบบ่อย
- ใช้
jsdomกับโค้ด Node ล้วน ๆ ทำให้การทดสอบช้าลงโดยไม่ได้ประโยชน์อะไร, ให้เปลี่ยนไปใช้node - ลืมใส่
transformIgnorePatternsสำหรับแพ็กเกจ ESM แพ็กเกจสมัยใหม่มาในรูปแบบ ESM เท่านั้น จึงต้องบอก Jest ให้แปลงพวกมัน - ม็อกรูปภาพ/CSS โดยไม่มีตัวแมป เมื่อ import ไฟล์
.pngในการทดสอบ Jest จะล้มเหลวหากไม่มีโมดูลม็อก - ตั้งค่า
clearMocksเป็น false ม็อกจะรั่วข้ามการทดสอบ และความล้มเหลวจะกลายเป็นแบบคาดเดาไม่ได้ ควรเปิดใช้งานไว้เป็นค่าเริ่มต้น
คำถามที่พบบ่อย
SWC (@swc/jest) เร็วกว่า ts-jest ถึง 10–20 เท่า เพราะมันข้ามการตรวจสอบชนิดข้อมูลแบบเต็มรูปแบบภายใน Jest ให้รันการตรวจสอบชนิดข้อมูลแยกต่างหากด้วย tsc --noEmit ในขั้นตอน CI ใช้ ts-jest เมื่อคุณต้องการให้ข้อผิดพลาดด้านชนิดข้อมูลทำให้การทดสอบล้มเหลว ส่วนถ้าต้องการความเร็วให้ใช้ SWC
happy-dom เร็วกว่า jsdom ประมาณ 2–3 เท่า และรองรับ DOM API เป็นส่วนใหญ่ อย่างไรก็ตาม มันอาจไม่ครอบคลุมบางกรณีพิเศษ ดังนั้นหากพบข้อผิดพลาด “not implemented” ให้เปลี่ยนกลับไปใช้ jsdom
ใช่ หากคอมโพเนนต์ของคุณ import ไฟล์ .css หรือ .scss โดยตรง ให้แมปพวกมันไปยัง identity-obj-proxy (สำหรับ CSS module) หรือสตับว่างขนาดเล็ก มิฉะนั้นการทดสอบจะเกิดข้อผิดพลาดตอน import
ได้ เลือกตัวเลือกผลลัพธ์แบบ TypeScript แล้วเครื่องมือจะสร้างไฟล์ jest.config.ts ให้ นอกจากนี้ Jest เวอร์ชัน 27 ขึ้นไปจะโหลดไฟล์ตั้งค่า .ts โดยอัตโนมัติเมื่อมีการติดตั้ง ts-node
เครื่องมือที่เกี่ยวข้อง
ตารางอ้างอิง ASCII
ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL
อ้างอิงตัวอักษร HTML
รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ
ตารางอ้างอิงแป้นพิมพ์ลัด
ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux
ตัวตรวจสอบอีเมล
ตรวจสอบที่อยู่อีเมล: ตรวจไวยากรณ์ RFC 5322 ค้นหา MX เรกคอร์ดแบบเรียลไทม์ พร้อมรายละเอียดส่วนท้องถิ่น โดเมน และความยาว ไม่มีการส่งอีเมลใด ๆ
เครื่องสร้างตัวอักษรสุ่ม
สร้างตัวอักษร A-Z แบบสุ่ม เลือกจำนวน ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก หรือแบบผสม แล้วใช้กับเกม โจทย์ หรือกิจกรรมในห้องเรียน
เครื่องมือสร้าง EditorConfig
สร้างไฟล์ .editorconfig ด้วยกฎสไตล์และขนาดการเยื้อง การจบบรรทัด ชุดอักขระ และช่องว่างของคุณ เพื่อให้การจัดรูปแบบสอดคล้องกันในทุก IDE และโปรแกรมแก้ไข
เครื่องมือนี้มีให้บริการในภาษาอื่น
- Jest-konfigurationsgenerator [SV]
- Jest Konfigurationsgenerator [DE]
- Générateur de configuration Jest [FR]
- Trình tạo cấu hình Jest [VI]
- Jest-configuratiegenerator [NL]
- Jest 설정 생성기 [KO]
- Generador de Configuración de Jest [ES]
- مولّد إعداد Jest [AR]
- Generator Konfigurasi Jest [ID]
- Generator konfiguracji Jest [PL]
- Jest 設定ジェネレーター [JA]
- Gerador de Configuração Jest [PT]
- Jest Yapılandırma Üreticisi [TR]
- Jest 配置生成器 [ZH]
- Jest Config Generator [EN]
- Generatore di Configurazione Jest [IT]
- Генератор конфигурации Jest [RU]