ฉันจะทดสอบตรรกะของฐานข้อมูลได้อย่างไร


12

ฉันยังคงมีปัญหาในการแก้ไขปัญหาเล็ก ๆ เมื่อพูดถึง TDD

ฉันต้องการวิธีที่จะได้รับชุดบันทึกข้อมูลที่กรองจากชั้นข้อมูล (linq2SQL) โปรดทราบว่าฉันใช้ linq สร้างชั้นเรียนจากที่สร้างขึ้นจาก DBML ตอนนี้ปัญหาคือฉันต้องการเขียนแบบทดสอบนี้

ฉัน:

ก) ใส่บันทึกในการทดสอบก่อนแล้วจึงดำเนินการวิธีการและทดสอบผลลัพธ์

b) ใช้ข้อมูลที่อาจอยู่ในฐานข้อมูล การไม่สนใจเหตุผลนี้อาจทำให้สิ่งต่าง ๆ แตกหักได้

c) คุณเคยแนะนำอะไรบ้าง

คำตอบ:


7

การเปลี่ยนแปลงใน (a)

มีการทดสอบ db หรือส่วนย่อยของ db ที่สามารถใช้สำหรับการทดสอบ เมื่อคุณตั้งค่าการทดสอบของคุณให้มีชุดคำสั่งที่จะเริ่มต้นฐานข้อมูลตามที่คุณต้องการเพื่อเริ่มการทดสอบ (ซึ่งสามารถทำได้ก่อนการทดสอบแต่ละครั้งตามความเหมาะสม) ซึ่งอาจรวมถึงการลบข้อมูลการแทรกข้อมูล ฯลฯ จากนั้นเรียกใช้การทดสอบของคุณ ในเฟส Teardown ให้ทำความสะอาดตัวเอง สามารถทำซ้ำได้มากเท่าที่ต้องการโดยไม่เสี่ยงต่อการรบกวนระบบสด (ไม่ควรทดสอบโดยใช้ข้อมูลในฐานข้อมูลที่จำเป็นสำหรับสิ่งอื่น)


1
คำตอบที่ดี. ฉันชอบสร้างฐานข้อมูลทิ้งโดยใช้ sqlite ไม่สามารถทำได้หากคุณต้องการทดสอบสิ่งต่าง ๆ ที่เฉพาะเจาะจงสำหรับการใช้ฐานข้อมูล (เช่นทริกเกอร์เป็นต้น) แต่จะอนุญาตการตั้งค่า / การฉีกขาดที่รวดเร็วและไม่เป็นอันตราย
bogeymin

1
@bogeymin - คุณยังสามารถตั้งค่าฐานข้อมูลทดสอบพร้อมกับทริกเกอร์หากคุณต้องการ (คุณสามารถสร้างฐานข้อมูลทั้งหมดด้วยสคริปต์ในช่วง FixtureSetup)
Yaakov Ellis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.