Pertama, beberapa definisi:
Sebuah unit menguji unit secara terpisah dari unit lain, tetapi apa artinya itu tidak secara konkret ditentukan oleh sumber otoritatif, jadi mari kita mendefinisikannya sedikit lebih baik: Jika batas I / O dilintasi (apakah I / O itu jaringan, disk, layar, atau input UI), ada tempat semi-objektif yang dapat kita gambar garis. Jika kode tergantung pada I / O, itu melintasi batas unit, dan karena itu perlu mengejek unit yang bertanggung jawab untuk I / O itu.
Di bawah definisi itu, saya tidak melihat alasan kuat untuk mengejek hal-hal seperti fungsi murni, yang berarti bahwa pengujian unit cocok untuk fungsi murni, atau fungsi tanpa efek samping.
Jika Anda ingin unit unit tes dengan efek, unit yang bertanggung jawab atas efek harus diejek, tetapi mungkin Anda harus mempertimbangkan tes integrasi. Jadi, jawaban singkatnya adalah: "jika Anda perlu mengejek, tanyakan pada diri sendiri apakah yang benar-benar Anda butuhkan adalah tes integrasi." Tapi ada jawaban yang lebih baik, lebih lama di sini, dan lubang kelinci jauh lebih dalam. Mengolok-olok mungkin bau kode favorit saya karena ada begitu banyak yang bisa dipelajari dari mereka.
Kode Berbau
Untuk ini, kami akan beralih ke Wikipedia:
Dalam pemrograman komputer, bau kode adalah ciri khas apa pun dalam kode sumber program yang mungkin mengindikasikan masalah yang lebih dalam.
Itu berlanjut nanti ...
"Bau adalah struktur tertentu dalam kode yang mengindikasikan pelanggaran prinsip-prinsip desain dasar dan berdampak negatif pada kualitas desain". Suryanarayana, Girish (November 2014). Refactoring untuk Bau Desain Perangkat Lunak. Morgan Kaufmann. hal. 258.
Bau kode biasanya bukan bug; mereka tidak salah secara teknis dan tidak mencegah program berfungsi. Sebaliknya, mereka menunjukkan kelemahan dalam desain yang dapat memperlambat pengembangan atau meningkatkan risiko bug atau kegagalan di masa depan.
Dengan kata lain, tidak semua kode bau. Sebaliknya, mereka adalah indikasi umum bahwa sesuatu mungkin tidak diungkapkan dalam bentuk optimal, dan bau dapat mengindikasikan peluang untuk memperbaiki kode yang dimaksud.
Dalam kasus ejekan, bau menandakan bahwa unit yang tampaknya membutuhkan ejekan tergantung pada unit yang akan diejek. Ini mungkin merupakan indikasi bahwa kita belum menguraikan masalah menjadi potongan-potongan yang dapat dipecahkan secara atom, dan itu bisa menunjukkan cacat desain pada perangkat lunak.
Inti dari semua pengembangan perangkat lunak adalah proses memecah masalah besar menjadi lebih kecil, potongan-potongan independen (dekomposisi) dan menyusun solusi bersama untuk membentuk aplikasi yang memecahkan masalah besar (komposisi).
Mengejek diperlukan ketika unit yang digunakan untuk memecah masalah besar menjadi bagian-bagian yang lebih kecil bergantung satu sama lain. Dengan kata lain, mengejek diperlukan ketika unit atom yang seharusnya kita komposisi tidak benar-benar atomik, dan strategi dekomposisi kita telah gagal untuk menguraikan masalah yang lebih besar menjadi lebih kecil, masalah independen yang harus diselesaikan.
Apa yang membuat mengolok-olok bau kode bukanlah bahwa ada sesuatu yang salah dengan mengolok-olok - kadang-kadang itu sangat berguna. Apa yang membuatnya menjadi bau kode adalah bahwa itu bisa menunjukkan sumber kopling yang bermasalah dalam aplikasi Anda. Kadang-kadang menghilangkan sumber sambungan jauh lebih produktif daripada menulis tiruan.
Ada banyak jenis kopling, dan beberapa lebih baik daripada yang lain. Memahami bahwa mengejek adalah bau kode dapat mengajarkan Anda untuk mengidentifikasi dan menghindari jenis terburuk di awal siklus hidup desain aplikasi, sebelum bau berkembang menjadi sesuatu yang lebih buruk.