Saya memulai proyek baru, dan berusaha sangat keras untuk menggunakan TDD untuk menggerakkan desain. Saya sudah mendorong selama bertahun-tahun, dan akhirnya mendapat persetujuan untuk menghabiskan waktu ekstra pada proyek ini untuk menggunakannya sementara saya belajar bagaimana melakukannya dengan benar.
Ini adalah modul baru, untuk mengikat ke sistem yang ada. Saat ini, semua akses data terjadi melalui layanan web, yang sebagian besar hanyalah pembungkus tipis atas prosedur yang tersimpan dalam basis data.
Salah satu persyaratan adalah bahwa untuk toko tertentu, saya mengembalikan semua Pesanan Pembelian yang dianggap valid untuk aplikasi ini. PO dianggap valid jika tanggal pengiriman jatuh dengan kisaran tertentu dari tanggal pembukaan toko (ini untuk toko baru).
Sekarang, saya tidak bisa memasukkan logika ini dalam kode aplikasi, karena saya tidak akan mengembalikan satu juta PO hanya untuk mendapatkan selusin yang berlaku untuk dapat diterapkan ke toko ini mengingat kendala di atas.
Saya berpikir, saya bisa meneruskan rentang tanggal ke proc GetValidPOs, dan meminta mereka menggunakan nilai-nilai itu untuk mengembalikan PO yang valid. Tetapi, bagaimana jika kita menambahkan persyaratan lain untuk apa yang dianggap sebagai PO yang valid?
Dan bagaimana cara menguji ini dan memverifikasinya tetap berfungsi? Kami tidak menggunakan ORM, dan itu tidak mungkin terjadi. Dan saya tidak bisa memanggil DB dalam pengujian saya.
Aku terjebak.
Pikiran saya yang lain, adalah memiliki beberapa ejekan yang mengembalikan data yang valid, yang lain yang mengembalikan beberapa data buruk, dan membuat repositori lokal melempar pengecualian jika data buruk terjadi, dan menguji bahwa pengecualian dilemparkan jika data yang tidak valid dikembalikan oleh GetValidPOs proc (atau tiruan yang digunakan dalam pengujian).
Apakah ini masuk akal? Atau ada cara yang lebih baik?
UPDATE: Sepertinya saya bisa menggunakan EF. Sekarang saya hanya perlu mencari cara untuk menggunakannya, dan membuatnya dapat diuji, sementara masih bisa mengandalkan prosedur yang tersimpan, dan kesulitan memiliki data yang tersebar di beberapa database.