เครื่องมือสร้างไฟล์ตั้งค่า Jest

การตั้งค่า Jest
ถัดไป

เลือกสแตกของคุณ, TypeScript, React, แบ็กเอนด์ Node หรือ Svelte, แล้วเครื่องมือจะสร้างไฟล์ jest.config.js ที่มีทรานส์ฟอร์เมอร์ที่ถูกต้อง ตัวแมปโมดูล สภาพแวดล้อมสำหรับการทดสอบ และเกณฑ์ความครอบคลุมครบถ้วน รวมถึงทุกตัวเลือกที่ผู้คนมักลืม เช่น moduleNameMapper สำหรับ CSS และรูปภาพ, setupFilesAfterEach, และ testPathIgnorePatterns สำหรับ node_modules และ dist

วิธีสร้างไฟล์ตั้งค่าของ Jest

  1. 1

    เลือกสแตกของคุณ

    TypeScript, React, Vue, Svelte, ใช้ Node ล้วน ๆ หรือใช้หลายอย่างผสมกัน, แต่ละแบบจะเติมทรานส์ฟอร์เมอร์ที่ถูกต้องไว้ล่วงหน้าให้

  2. 2

    เลือกสภาพแวดล้อมสำหรับการทดสอบ

    jsdom สำหรับโค้ดฝั่งเบราว์เซอร์, node สำหรับแบ็กเอนด์ หรือสภาพแวดล้อมที่กำหนดเอง

  3. 3

    เปิด/ปิดฟีเจอร์

    เกณฑ์ความครอบคลุม การทดสอบแบบสแนปช็อต เส้นทางม็อก ไฟล์ setup ที่กำหนดเอง และรูปแบบการยกเว้นการแปลง

  4. 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 และโปรแกรมแก้ไข

เครื่องมือนี้มีให้บริการในภาษาอื่น