SORU
4 EYLÜL 2008, PERŞEMBE


'iyi bir şekilde DateTime üzerine yazmak ne.Test sırasında şimdi?

Bazıları bende de var (C#) doğru zamanda işleri hesaplamak için, bugünün tarihini kullanan kod. Eğer test günün tarihi kullanırsam doğru gelmiyor deney, hesaplama tekrarlamak zorunda. Sonucu bilinen bir değer olup olmadığını test edebilirsiniz böylece test içinde bilinen bir değer için tarih ayarlamak için en iyi yolu nedir?

CEVAP
4 EYLÜL 2008, PERŞEMBE


Benim tercihim aslında zaman kullanan sınıflar arayüz gibi güveniyor

interface IClock
{
    DateTime Now { get; } 
}

Somut bir uygulama ile

class SystemClock: IClock
{
     DateTime Now { get { return DateTime.Now; } }
}

Daha sonra Eğer isterseniz, test için istediğiniz saat başka türlü vermek gibi

class StaticClock: IClock
{
     DateTime Now { get { return new DateTime(2008, 09, 3, 9, 6, 13); } }
}

Belki biraz havai temin saati sınıfı kullanır, ama olabilir idare tarafından herhangi bir sayı bağımlılık enjeksiyon çözümleri (kullanarak bir ters Çevirme Kumanda kabı, düz eski kurucu/kurucu enjeksiyon, hatta bir Static Gateway Pattern).

Diğer mekanizmalar sunan bir nesne veya yöntem sağlar istediğiniz zamanlarda da işe, ama bence en önemli şey olduğu için önlemek sıfırlama sistem saati, o sadece tanıştırmayacak ağrı diğer seviyeleri.

Ayrıca, kullanarak DateTime.Now ve de dahil olmak üzere bu hesaplamalar gelmez değil hissediyorum sağ boşaltır sizi yeteneğini test etmek için belirli zamanlarda, örneğin, eğer keşfetmek bir hata sadece olur yakınlarındaki bir gece yarısı sınır, ya da Salı günü. Şimdiki zaman kullanarak, bu senaryoları test etmek için izin vermez. Ya da en azından istediğin zaman değil.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • B3ASTTY™

    B3ASTTY™

    27 Mayıs 2013
  • TitaniumBackup

    TitaniumBack

    10 EYLÜL 2011
  • WePlayWeWatch

    WePlayWeWatc

    3 Temmuz 2013