Forum: Ders Arası RSS
assertThrown
acehreli (Moderatör) #1
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: assertThrown
Bazen işlevlerin yanlış parametrelere karşılık hata atmalarını isteriz. Bunu birim testlerinde denetlerken aşağıdaki gibi kodlar kullanıyorduk:

import std.exception;
 
double kareKök(double değer)
{
    enforce(değer >= 0, "Değer sıfırdan küçük olamaz");
 
    double sonuç;
    // ...
    return sonuç;
}
 
unittest
{
    auto hataAtıldı_mı = false;
 
    try {
        scope(failure) hataAtıldı_mı = true;
        kareKök(-1);
 
    } catch {
        // Hata önemli değil; atılmış olması yeterli.
    }
 
    assert(hataAtıldı_mı);
}
 
void main()
{}

O kadar kalabalık kodun daha kısa bir eşdeğeri olması gerektiğini düşünüyordum; varmış: std.exception.assertThrown. Anlamı, "şu işlemin hata attığını denetle" demekmiş. Onun sayesinde yukarıdaki birim testi içindeki kodlar tek satıra iniyor:

unittest
{
    assertThrown(kareKök(-1));
}

Atılan hatanın Exception veya ondan türeyen bir tür olduğunu varsayıyor. Özel bir hata türünün atılıp atılmadığı denetlenmek istendiğinde şablon parametresi olarak belirtiliyor:

    assertThrown!ÖzelBirHataTürü(birİşlem());

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Ders Arası RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-18, 09:36:15 (UTC -08:00)