Saya sudah membaca banyak hal tentang TDD tapi saya masih ragu. Sebagai contoh, saya punya diagram kelas ini:
Ini adalah contoh sederhana, hanya untuk mempelajari tentang benda-benda TDD dan tiruan.
Tes mana yang harus saya tulis terlebih dahulu? Produk , lalu Baris dan terakhir, Pesan ? Jika saya melakukan itu, haruskah saya menggunakan Lini dan Produk untuk menguji Pesanan atau haruskah saya menggunakan Objek Mock? Kapan saya harus menggunakan Objek Mock? Haruskah saya menggunakan UML dengan XP dan TDD?
Saya belum mendapatkan barang-barang ini.
sumber
Saya tidak melihat banyak kebutuhan untuk benda tiruan di sini. Seperti yang ditunjukkan oleh orang lain, Anda membutuhkan yang sebagian besar jika dependensi sulit diatur.
Sebagai contoh, kami menggunakannya dengan proyek-proyek Ruby on Rails ketika kami menguji pengontrol dan membutuhkan login pengguna yang akan membutuhkan panggilan ke pengontrol lain dan menyimpan bagian dari informasi itu dalam cookie. Dalam hal ini, sangat membantu untuk mengejek pengguna yang masuk yang mengembalikan true, ketika ditanya tentang hak akses tertentu.
sumber
Biasanya untuk pengujian Anda ingin mengisolasi sistem / objek yang diuji, sehingga Anda akan mengejek apa pun yang ada di luar itu. Jadi, gunakan diagram kelas Anda, saat menguji objek pesanan, gunakan tiruan untuk objek garis. Saat menguji Jalur, gunakan tiruan untuk Pesanan dan Produk. Saat menguji produk, gunakan tiruan untuk Line.
sumber
"TDD pada dasarnya adalah teknik desain dengan efek samping untuk memastikan bahwa kode sumber Anda diuji unit secara menyeluruh" - Scott W. Ambler
Idenya adalah menemukan desain dengan menulis unit test. Dalam kasus Anda, tampaknya Anda sudah memiliki desain, yang agak mengalahkan tujuan TDD (dengan asumsi desain Anda final).
Tentang mengejek. Jika Anda ingin mengejek, saya sarankan Anda mengejek Produk saat menulis tes untuk Line dan tiruan Line saat menguji Order. Tapi mungkin berlebihan di sini. Saya pribadi mencoba membatasi ejekan sebanyak mungkin, dan menggunakannya untuk memisahkan dependensi pada kelas eksternal (seperti contoh basis data).
sumber