Birim Testi: DateTime.Şimdi | Netgez.com
SORU
11 Mart 2010, PERÅžEMBE


Birim Testi: DateTime.Åžimdi

'Şimdiki zaman' DateTime daha farklı olacak.beklediği bazı birim testleri var Bilgisayarın saatini değiştirmek için açıkçası istemiyorum artık. Bunu başarmak için en iyi strateji nedir?

Teşekkürler

CEVAP
11 Mart 2010, PERÅžEMBE


iyistrateji 8**.

Alternatif olarakayrıca bir zaman bir soyutlama tanımlayabilirsinizOrtam İçeriği:

public abstract class TimeProvider
{
    private static TimeProvider current =
        DefaultTimeProvider.Instance;

    public static TimeProvider Current
    {
       get { return TimeProvider.current; }
       set 
       {
           if (value == null)
           {
               throw new ArgumentNullException("value");
           }
           TimeProvider.current = value; 
       }
   }

   public abstract DateTime UtcNow { get; }

   public static void ResetToDefault()
   {    
       TimeProvider.current = DefaultTimeProvider.Instance;
   }            
}

Bu eğer bu şekilde tüketmek sağlayacaktır:

var now = TimeProvider.Current.UtcNow;

Bir birim test, Çift/Test Sahte bir nesne ile TimeProvider.Current değiştirebilirsiniz. Örnek Adedi kullanarak:

var timeMock = new Mock<TimeProvider>();
timeMock.SetupGet(tp => tp.UtcNow).Returns(new DateTime(2010, 3, 11));
TimeProvider.Current = timeMock.Object;

Statik devlet ile test birimi, ancak, her zaman unutmayınFikstür yıkınTimeProvider.ResetToDefault() çağırarak.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • Darren Kitchen

    Darren Kitch

    3 EKÄ°M 2011
  • Dive In

    Dive In

    17 Temmuz 2013
  • Rozetked | Обзоры

    Rozetked | Ð

    5 AÄžUSTOS 2011