Test doubles เป็น object ที่ทำหน้าที่แทน dependency จริงใน test — รวมถึง mocks, stubs, spies, fakes และ dummies มันแยกโค้ดที่กำลังทดสอบออกจาก dependency ของมัน (ฐานข้อมูล, API, service) ช่วยให้สามารถทำ unit test ที่รวดเร็ว มุ่งเน้น และควบคุมได้
ทำไมต้องใช้ test double
To test a unit in ISOLATION, replace its real dependencies (DB, API, services) with
TEST DOUBLES (fake stand-ins):
→ isolate the unit (test ONLY it, not its dependencies)
→ FAST (no real DB/network); CONTROLLED (set up exact scenarios, including errors);
DETERMINISTIC (no external flakiness)
