ขณะนี้ฉันกำลังตั้งค่าพื้นฐานสำหรับแอปพลิเคชัน ASP.Net MVC และฉันกำลังมองหาการทดสอบหน่วยที่ฉันควรเตรียมที่จะเขียน ฉันเคยเห็นในหลาย ๆ ที่ที่ผู้คนพูดว่า 'ไม่ต้องกังวลกับการทดสอบมุมมองของคุณไม่มีตรรกะและมันไม่สำคัญ
ฉันไม่เข้าใจว่าสิ่งนี้กลายเป็นภูมิปัญญาที่ยอมรับได้อย่างไร การทดสอบการรวมเข้าด้วยกันนั้นมีจุดประสงค์ที่แตกต่างจากการทดสอบหน่วย ถ้าฉันทำบางสิ่งบางอย่างฉันไม่ต้องการที่จะรู้ว่าครึ่งชั่วโมงต่อมาเมื่อการทดสอบการรวมของฉันหยุดทำงานฉันอยากรู้ทันที
สถานการณ์ตัวอย่าง: สมมติ ว่าเรากำลังติดต่อกับแอพ CRUD มาตรฐานกับเอนทิตีลูกค้า ลูกค้ามีชื่อและที่อยู่ ในการทดสอบแต่ละระดับฉันต้องการตรวจสอบว่าตรรกะการดึงข้อมูลลูกค้าได้รับทั้งชื่อและที่อยู่อย่างถูกต้อง
เพื่อทดสอบหน่วยเก็บข้อมูลฉันเขียนการทดสอบการรวมระบบเพื่อตีฐานข้อมูล ในการทดสอบกฎธุรกิจฉันจำลองที่เก็บข้อมูลป้อนข้อมูลกฎธุรกิจที่เหมาะสมและตรวจสอบผลลัพธ์ที่คาดหวังของฉันคืน
สิ่งที่ฉันต้องการทำ: ในการทดสอบ UI หน่วยฉันจำลองกฎธุรกิจตั้งค่าอินสแตนซ์ลูกค้าที่คาดหวังของฉันแสดงผลมุมมองและตรวจสอบว่ามุมมองมีค่าที่เหมาะสมสำหรับอินสแตนซ์ที่ฉันระบุ
สิ่งที่ฉันทำอยู่: เพื่อทดสอบหน่วยเก็บข้อมูลฉันเขียนการทดสอบการรวมตั้งค่าการเข้าสู่ระบบที่เหมาะสมสร้างข้อมูลที่ต้องการในฐานข้อมูลเปิดเบราว์เซอร์นำทางไปยังลูกค้าและตรวจสอบหน้าผลลัพธ์ที่เหมาะสม ค่าสำหรับอินสแตนซ์ที่ฉันระบุ
ฉันรู้ว่ามีการทับซ้อนกันระหว่างสองสถานการณ์ที่กล่าวข้างต้น แต่ความแตกต่างที่สำคัญเวลาและความพยายามที่จำเป็นในการตั้งค่าและดำเนินการทดสอบ
หากฉัน (หรืออุปกรณ์อื่น) ลบฟิลด์ที่อยู่ออกจากมุมมองฉันไม่ต้องการรอให้การทดสอบการรวมระบบค้นพบสิ่งนี้ ฉันต้องการค้นพบและตั้งค่าสถานะในการทดสอบหน่วยที่ได้รับหลายครั้งต่อวัน
ฉันรู้สึกว่าฉันไม่เข้าใจแนวคิดหลักบางอย่าง บางคนสามารถอธิบายได้หรือไม่ว่าทำไมการตอบรับการทดสอบในทันทีเกี่ยวกับความถูกต้องของมุมมอง MVC เป็นสิ่งที่ไม่ดี (หรือถ้าไม่เลวก็ไม่ใช่วิธีที่คาดหวังในการรับฟังความคิดเห็น)
"To unit-test the repository, I write an integration test"
รออะไร? นั่นไม่ใช่การทดสอบหน่วยของที่เก็บ คุณกำลังทำการทดสอบโดยอัตโนมัติ แต่โค้ดที่อยู่ภายใต้การทดสอบยังรวมถึง DAL และฐานข้อมูล ในการทดสอบหน่วยเก็บข้อมูลคุณต้องแยกมันเหมือนกับกฎทางธุรกิจของคุณ