มีคำตอบให้กับคำถามเกี่ยวกับวิธีการเรียนการทดสอบที่เชื่อมต่อกับฐานข้อมูลเช่นมี"เรียนให้บริการทดสอบควรเชื่อมต่อ ..."และ"การทดสอบหน่วย - ฐานข้อมูลแอปพลิเคคู่"
ดังนั้นในระยะสั้นสมมติว่าคุณมีคลาส A ที่จำเป็นต้องเชื่อมต่อกับฐานข้อมูล แทนที่จะให้การเชื่อมต่อจริงคุณให้ A พร้อมกับอินเทอร์เฟซที่ A อาจใช้เพื่อเชื่อมต่อ สำหรับการทดสอบคุณใช้อินเทอร์เฟซนี้กับบางสิ่ง - โดยไม่ต้องเชื่อมต่อแน่นอน ถ้าคลาส B สร้างอินสแตนซ์ A ขึ้นมามันจะต้องผ่านการเชื่อมต่อฐานข้อมูล "ของจริง" ไปยัง A แต่นั่นหมายความว่า B เปิดการเชื่อมต่อฐานข้อมูล นั่นหมายถึงการทดสอบ B คุณฉีดการเชื่อมต่อเข้าสู่ B แต่ B นั้นถูกสร้างขึ้นในคลาส C เป็นต้น
ดังนั้นที่จุดฉันต้องพูดว่า "ที่นี่ฉันดึงข้อมูลจากฐานข้อมูลและฉันจะไม่เขียนหน่วยทดสอบสำหรับรหัสชิ้นนี้"?
ในคำอื่น ๆ : บางแห่งในรหัสในบางชั้นฉันต้องโทรsqlDB.connect()
หรือสิ่งที่คล้ายกัน ฉันจะทดสอบคลาสนี้ได้อย่างไร
และมันเป็นรหัสเดียวกันกับที่ต้องจัดการกับ GUI หรือระบบไฟล์หรือไม่?
ฉันต้องการทดสอบหน่วย การทดสอบประเภทอื่นใดไม่เกี่ยวข้องกับคำถามของฉัน ฉันรู้ว่าฉันจะทดสอบเพียงชั้นเดียวเท่านั้น (ฉันเห็นด้วยกับคุณ Kilian) ตอนนี้บางคลาสต้องเชื่อมต่อกับฐานข้อมูล ถ้าฉันต้องการทดสอบคลาสนี้และถามว่า "ฉันจะทำแบบนี้ได้อย่างไร" หลายคนพูดว่า: "Use Dependency Injection!" แต่นั่นทำให้ปัญหาเปลี่ยนไปอีกระดับหนึ่งเท่านั้นใช่ไหม ดังนั้นฉันถามฉันจะทดสอบชั้นเรียนได้อย่างไรจริง ๆ สร้างการเชื่อมต่อจริง ๆ
คำถามโบนัส: บางคำตอบที่นี่ต้มลงไปที่ "ใช้วัตถุจำลอง!" นั่นหมายความว่าอย่างไร? ฉันเยาะเย้ยชั้นเรียนที่ชั้นเรียนภายใต้การทดสอบขึ้นอยู่กับ ฉันจะเยาะเย้ยการทดสอบในชั้นเรียนตอนนี้และทดสอบการเยาะเย้ย (ซึ่งใกล้เคียงกับแนวคิดของการใช้เทมเพลตวิธีดูด้านล่าง)?