SOLID nesneleri gibi birim testlerinin de "kırılmanın bir nedeni" olması gerektiği fikrini okudum. Bu asil bir hedef, ancak bence birçok durumda bunun mümkün olmadığını göreceksiniz. Bu örneklerden biri, test edilen sistemin bağımlılığı olan "zengin" bir etki alanı nesneniz (DDD, her ikisi de "etki alanı modelini içeren Varlıklar ve Değer Nesneleri arasında ayrım yapar) olduğu yerdir.
Bu durumlarda, verilen felsefeye sahibim.etki alanı nesnesinin kendi kapsamlı birim sınama kapsamı vardır ve nesnenin farklı bir SUT için birim sınamada tasarlandığı gibi çalışacağına güvenerek birim sınamayı mutlaka ihlal etmez. Bu test, etki alanında bir değişiklik nedeniyle kırılacaksa, etki alanı nesnesinin birim testinin de kırılmasını ve beni araştırılacak bir şeye doğru yönlendirmesini beklerdim. Etki alanı nesnesinin birim sınaması kırmızı sınama olarak düzgün şekilde güncelleştirildiyse, değişiklikle yeşil hale getirildiyse ve bu diğer sınama başarısız olduysa, bu da kötü bir şey değildir; bu, diğer testin beklentilerinin alan için yeni beklentilerle çeliştiği anlamına geliyor ve her ikisinin de birbiriyle ve sistemin kapsayıcı kabul kriterleriyle aynı fikirde olduğundan emin olmam gerekiyor.
Bu nedenle, bir etki alanı nesnesini yalnızca, söz konusu etki alanı nesnesinin birim sınama perspektifinden istenmeyen (örneğin veri depoları gibi dış kaynaklara dokunma) "yan etkiler" üretmesi veya etki alanı nesnesinin mantığı yeterince karmaşık olsaydı alay ederdim. test için uygun duruma getirmek testi tanımlamak ve geçmek için bir engel haline gelir.
O zaman itici soru olur; hangisi daha kolay? Etki alanı nesnesini test içinde amaçlanan amaç için kullanmak veya alay etmek mi? İşlevsel bir değişikliğin hizmetin testini karmaşık bir şekilde bozması gibi, artık daha kolay bir seçenek olana kadar hangisini daha kolay yaparsanız yapın; bu olursa, hizmeti karmaşık bir şekilde bozmadan, hizmete bağlı işlevsel gereksinimleri ortaya çıkaran bir model oluşturmak için testi yeniden yazın.
Her iki durumda da, bu ikisi arasındaki etkileşimi daha yüksek bir soyutlama düzeyinde (örneğin, örneğin bir hizmetin arkasındaki işlevselliği değil) test eden gerçek hizmete takılı gerçek etki alanı nesnesini kullanan bir tümleştirme testi olmalıdır. ancak etki alanı nesnesinin serileştirildiği ve gönderildiği bir proxy).