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

  • 1881 Animation

    1881 Animati

    5 EKİM 2013
  • Kai Moosmann

    Kai Moosmann

    5 Temmuz 2006
  • MrExcite96

    MrExcite96

    17 ŞUBAT 2011