7 คะแนน โดย tothefullest08 2025-03-23 | ยังไม่มีความคิดเห็น | แชร์ทาง WhatsApp

1. ภาพรวม

  • แชร์วิธีสร้างการทดสอบแบบหน่วยด้วยแนวทาง Sociable Test (เชื่อมต่อกับ DB จริง)
  • ORM อย่าง TypeORM มีปัญหาเรื่อง type safety จึงจำเป็นต้องมีการทดสอบโดยใช้ DB จริง

2. Solitary Test vs Sociable Test

  • การเปรียบเทียบ
    • Solitary Test ทดสอบแบบแยกอิสระโดยแทนที่ dependency ด้วย Mock (รวดเร็วแต่มีโอกาสแตกต่างจากสภาพแวดล้อมจริง)
    • Sociable Test ทดสอบร่วมกับ external dependency จริง (DB) จึงช่วยเพิ่มความน่าเชื่อถือได้ (ช้ากว่าแต่ค้นพบปัญหาที่ใกล้เคียงของจริงได้ตั้งแต่เนิ่น ๆ)
  • ข้อจำกัดของ Solitary Test
    • การ mocking ทำให้ตรวจพบปัญหาในการโต้ตอบกับ DB จริงได้ไม่ครบถ้วน
    • ปัญหาการตรวจเช็ก type ของ TypeORM อาจทำให้เกิด runtime error ได้
  • ความจำเป็นของ Sociable Test
    • การเชื่อมต่อกับ DB จริงช่วยตรวจสอบปัญหาของ query ที่ซับซ้อน, transaction และการตั้งค่า relation ได้
    • สามารถตั้งค่า test database และทดสอบการแยกข้อมูลด้วยวิธี transaction ได้
  • ข้อดีและข้อควรระวังของ DB Sociable Test
    • ข้อดี: การทดสอบที่น่าเชื่อถือสูง, พบปัญหาที่เกี่ยวกับ ORM ได้เร็ว, ตรวจสอบ schema ไม่ตรงกันได้
    • ข้อควรระวัง: ความเร็วในการทดสอบลดลง, การตั้งค่าสภาพแวดล้อมซับซ้อน, ต้องจัดการ transaction

3. การทำ testing ที่เชื่อมต่อ DB ใน NestJS

  • การตั้งค่า
    • ตั้งค่าการเชื่อมต่อ test DB ด้วย MySQL
    • ใช้ transaction เพื่อ rollback การเปลี่ยนแปลงของแต่ละการทดสอบ
  • ใช้ lifecycle ของเฟรมเวิร์กทดสอบ Jest
    • ใช้ beforeAll / beforeEach / afterEach / afterAll
    • ตั้งค่าการเริ่มต้นและการเชื่อมต่อ DB รวมถึงการเริ่มและสิ้นสุด transaction

4. สรุป

  • เวลาสร้าง unit test ควรผสมผสานการใช้ Solitary Test และ Sociable Test ให้เหมาะสม
  • Sociable Test สามารถช่วยได้มากในการป้องกันปัญหาที่เกี่ยวข้องกับ ORM

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น