Saat ini saya sedang menyiapkan landasan untuk aplikasi ASP.Net MVC dan saya sedang mencari ke dalam unit-tes apa yang harus saya siapkan untuk menulis. Saya telah melihat di beberapa tempat orang-orang pada dasarnya mengatakan 'jangan repot-repot menguji pandangan Anda, tidak ada logika dan itu sepele dan akan dibahas oleh tes integrasi'.
Saya tidak mengerti bagaimana ini telah menjadi kebijaksanaan yang diterima. Tes integrasi melayani tujuan yang sama sekali berbeda dari tes unit. Jika saya memecahkan sesuatu, saya tidak ingin tahu setengah jam kemudian ketika tes integrasi saya pecah, saya ingin segera tahu.
Skenario Contoh: Katakanlah kita sedang berurusan dengan aplikasi CRUD standar dengan entitas Pelanggan. Pelanggan memiliki nama dan alamat. Pada setiap tingkat pengujian, saya ingin memverifikasi bahwa logika pengambilan Pelanggan mendapatkan nama dan alamat dengan benar.
Untuk menguji unit repositori, saya menulis tes integrasi untuk mencapai database. Untuk menguji aturan bisnis, saya membuat tiruan repositori, memberi makan data yang sesuai aturan bisnis, dan memverifikasi hasil yang saya harapkan dikembalikan.
Apa yang ingin saya lakukan: Untuk menguji UI, saya mengejek aturan bisnis, mengatur instance pelanggan yang diharapkan, membuat tampilan, dan memverifikasi bahwa view berisi nilai yang sesuai untuk instance yang saya tentukan.
Apa yang saya lakukan: Untuk menguji unit repositori, saya menulis tes integrasi, mengatur login yang sesuai, membuat data yang diperlukan dalam database, membuka browser, menavigasi ke pelanggan, dan memverifikasi halaman yang dihasilkan berisi yang sesuai nilai untuk contoh yang saya tentukan.
Saya menyadari bahwa ada tumpang tindih antara dua skenario yang dibahas di atas, tetapi perbedaan utama waktu dan upaya yang diperlukan untuk mengatur dan menjalankan tes.
Jika saya (atau pengembang lain) menghapus bidang alamat dari tampilan, saya tidak ingin menunggu tes integrasi untuk menemukan ini. Saya ingin ditemukan dan ditandai dalam unit-test yang mendapat beberapa kali setiap hari.
Saya merasa bahwa saya tidak memahami beberapa konsep kunci. Adakah yang bisa menjelaskan mengapa menginginkan umpan balik pengujian segera atas validitas tampilan MVC adalah hal yang buruk? (atau jika tidak buruk, maka bukan cara yang diharapkan untuk mendapatkan umpan balik tersebut)
"To unit-test the repository, I write an integration test"
Tunggu apa? Itu bukan tes unit repositori. Anda mengotomatiskan tes untuk itu, tetapi kode yang diuji masih menyertakan DAL dan database. Untuk menguji unit repositori, Anda mengisolasinya seperti aturan bisnis Anda.