Bagaimana saya menguji logika basis data?

12

Saya masih memiliki masalah untuk menyelesaikan masalah kecil ketika datang ke TDD.

Saya membutuhkan metode yang akan mendapatkan catatan tertentu dari data yang difilter dari lapisan data (linq2SQL). Harap dicatat bahwa saya menggunakan kelas LINQ yang dihasilkan dari yang dihasilkan dari DBML. Sekarang masalahnya adalah saya ingin menulis tes untuk ini.

apakah saya:

a) pertama-tama masukkan catatan dalam tes dan kemudian jalankan metode dan uji hasilnya

b) menggunakan data yang mungkin ada dalam database. Tidak tertarik pada logika ini karena dapat menyebabkan hal-hal rusak.

c) apa yang pernah Anda sarankan?

Neale
sumber

Jawaban:

7

Variasi pada (a).

Memiliki tes db atau subbagian dari db yang dapat digunakan untuk pengujian. Ketika Anda mengatur tes Anda, miliki rutin yang menginisialisasi DB saat Anda membutuhkannya untuk memulai pengujian (ini dapat dilakukan sebelum setiap tes, sesuai kebutuhan). Ini mungkin termasuk menghapus data, memasukkan data, dll. Kemudian jalankan pengujian Anda. Pada fase Teardown, bersihkan dirimu sendiri. Dapat diulang sebanyak yang diperlukan, tanpa risiko mengganggu sistem langsung (bukan ide yang baik untuk menguji menggunakan data dalam database yang diperlukan untuk hal lain).

Yaakov Ellis
sumber
1
Jawaban yang bagus. Saya suka membuat database yang dibuang menggunakan sqlite. Itu tidak mungkin jika Anda ingin menguji hal-hal yang spesifik untuk implementasi basis data (seperti pemicu, misalnya), tetapi hal itu memungkinkan pengaturan / penghancuran yang cepat dan tidak berbahaya.
bogeymin
1
@ bogeymin - Anda masih dapat mengatur tes DB dengan pemicu jika Anda mau (Anda dapat membuat seluruh db dengan skrip selama FixtureSetup)
Yaakov Ellis