İlk olarak, bazı tanımlar:
Bir birim testi, birimleri diğer birimlerden izole edilmiş olarak test eder, ancak bunun anlamı herhangi bir yetkili kaynak tarafından somut olarak tanımlanmaz, bu yüzden onu biraz daha iyi tanımlayalım: G / Ç sınırları aşılmışsa (G / Ç'nin ağ olup olmadığı, disk, ekran veya UI girişi), çizgi çizebileceğimiz yarı objektif bir yer var. Kod G / Ç'ye bağlıysa, bir birim sınırını geçiyor ve bu nedenle bu G / Ç'den sorumlu birimi alay etmesi gerekecek.
Bu tanım altında, saf fonksiyonlar gibi şeylerle alay etmek için zorlayıcı bir neden görmüyorum, yani birim testinin saf fonksiyonlara ya da yan etkileri olmayan fonksiyonlara yol açtığı anlamına geliyor.
Efektli test birimlerini birleştirmek istiyorsanız, efektlerden sorumlu birimler alay edilmelidir, ancak bunun yerine belki de bir entegrasyon testi düşünmelisiniz. Bu yüzden kısa cevap: "Alay etmek istersen, gerçekten ihtiyacın olan şeyin bir entegrasyon testi olup olmadığını sor." Fakat burada daha iyi, daha uzun cevaplar var ve tavşan deliği çok daha derinlere iniyor. Alaycı benim en sevdiğim kod kokusu olabilir, çünkü onlardan öğrenecek çok şey var.
Kod Kokuyor
Bunun için Wikipedia'ya döneceğiz:
Bilgisayar programlamasında, bir kod kokusu, daha derin bir sorunu gösteren bir programın kaynak kodundaki herhangi bir özelliktir.
Daha sonra devam eder ...
"Kokular, koddaki temel tasarım ilkelerinin ihlal edildiğini gösteren ve tasarım kalitesini olumsuz yönde etkileyen belirli yapılardır". Suryanarayana, Girish (Kasım 2014). Yazılım Tasarım Kokuları için Refactoring. Morgan Kaufmann. s. 258.
Kod kokuları genellikle böcek değildir; teknik olarak hatalı değiller ve programın çalışmasını engellemiyorlar. Bunun yerine, tasarımdaki gelişimi yavaşlatabilen veya gelecekte hata ya da başarısızlık riskini artırabilecek zayıflıkları belirtir.
Başka bir deyişle, tüm kod kokuları kötü değildir. Bunun yerine, bir şeyin en uygun biçimde ifade edilemeyeceğine dair ortak göstergelerdir ve koku , söz konusu kodu geliştirme fırsatı gösterebilir.
Alay etme durumunda, koku, alay çağrısı yapan birimlerin alay edilecek birimlere bağlı olduğunu gösterir. Biz atomik-çözülebilir parçalar halinde sorunu çürümüş değil bir gösterge olabilir ve bu yazılımda bir tasarım hatasını gösterebilir.
Tüm yazılım geliştirmenin özü, büyük bir problemi daha küçük, bağımsız parçalara ayırma (ayrıştırma) ve çözümleri, büyük problemi çözen bir uygulama (kompozisyon) oluşturmak için bir araya getirme sürecidir.
Büyük problemi daha küçük parçalara bölmek için kullanılan birimler birbirine bağlıyken alay gerekir. Başka bir deyişle, sözde atomik bileşim birimlerimiz gerçekten atomik olmadığında ve alay etme stratejimiz daha büyük problemi çözülecek daha küçük ve bağımsız problemlere parçalayamadığında alaycı gerekir .
Bir kodla alay etmeyi koklayan şey, alayla ilgili doğal olarak yanlış bir şey olmadığı değildir - bazen çok yararlıdır. Kod kokusu yapan şey, uygulamanızda problemli bir bağlantı kaynağı olduğunu göstermesidir. Bazen bu bağlantı kaynağını kaldırmak, sahte yazmaktan çok daha verimlidir.
Birçok bağlantı türü vardır ve bazıları diğerlerinden daha iyidir. Alayların bir kod kokusu olduğunu anlamak , koku daha kötü bir şey haline gelmeden önce , uygulama tasarım yaşam döngüsünün başındaki en kötü türleri tespit etmeyi ve bunlardan kaçınmayı öğretebilir .