Bazı açıklayıcı metin ile bir istisna olabilecek bir yöntem düşünün:
if ($someCondition) {
throw new \Whatever\Exception('dilithium exhausted');
}
Ve başka yöntemde, aynı özel durum, ancak farklı metin olabilir bir blok:
if ($anotherCondition) {
throw new \Whatever\Exception('differentialator exploded');
}
Bu sınıf için birim testleri yazarken bu iki istisna düzgün attırmayı doğrulayabilir, böylece başarısızlık durumları oluşturmak. : Bu başarısızlık durumlarda, size tercih edersiniz
A) tuzak deney yöntemin bilgilendirme kısmı jenerik \ neyse \ Exception class exceptionExpected @ kullanın ve daha doğru bir tane var varsayarak, getMessage () metin göz ardı? (Kötü bir fikir gibi görünüyor.)
veya:
B) Kullanım / catch deneyin ve daha sonra yakalanan özel durumun getMessage () metin bekliyorsanız tam tanımlayıcı dize eşittir iddia? (Eğer hata ifadeler değiştirdiğinizde Daha esnek ama senin testleri değiştirilmesi demektir.)
veya:
C) Her hata bir durumda (örneğin, \ neyse \ DilithiumException ve \ neyse \ DifferentialatorException) için ayrı bir özel durum oluşturma ve ardından her biri için exceptionExpected @ kullanın.
Şu anda B kullanarak ama bu aynı senaryoda ne yaptığını başkalarının meraklıyım C'ye doğru eğilimi ediyorum. Eğer belirlemenize yardımcı herhangi bir kurallar var mı "Hangi noktada bir hata daha genel ortak bir karşı kendi istisna sınıfını hak ediyor?"