SORU
20 NİSAN 2009, PAZARTESİ


Bir nesne üzerinde önceki beklentileri temizlemek için Nasıl?gergedan Alay ediyor:

Dönüş değeri ayarlamak istiyorum

_stubRepository.Stub(Contains(null)).IgnoreArguments().Return(true);

ama sonra belirli bir test, yanlış dönmek bu beklenti geçersiz kılar.

Gibi bir şey

_stubRepository.ClearExpectations();  //<- this does not exist, I'm just making something up
_stubRepository.Stub(Contains(null)).IgnoreArguments().Return(false);

Dikkat, beklenti, ikinci çağrı üzerine yanlış dönmek istemiyorum, ilk beklenti geçersiz kılmak istiyorum.

Bu benim test senaryosu büyük ölçüde basitleştirmeye yardımcı olur.

CEVAP
20 NİSAN 2009, PAZARTESİ


Üç yolu vardır:

BackToRecord kullanarak beklentilerini sıfırlayabilirsiniz

Hiç garip olduğu için kullanılan itiraf etmeliyim.

// clear expectations, an enum defines which
_stubRepository.BackToRecord(BackToRecordOptions.All);
// go to replay again.
_stubRepository.Replay();

Düzenleme:Şimdi bazen kullanıyorum, aslında en temiz yoludur. Bunu yapan bir uzantısı yöntemi (Saplama gibi) olmalı - sadece unutulmuş galiba. Kendi yazmak için öneririm.

Tekrar kullanabilirsiniz.() Herhangi bir

'Sonları' saplama tanımı sipariş ve "" önceki tanımlar. geçersiz kılar Ama bir şekilde örtülü. Yazmak kolay olduğu için bazen kullanıyorum.

_stubRepository.Stub(x => x.Contains(null))
  .IgnoreArguments()
  .Return(false)
  .Repeat.Any();

Yeni bir alay oluşturabilirsiniz

Önemsiz, ama açık ve kolay anlaşılır. Sadece tanımları bol tutmak ve sadece bir telefon değiştirmek istiyorsanız bir sorundur.

_stubRepository = MockRepository.GenerateMock<IRepository>();
_stubRepository.Stub(x => x.Contains(null))
  .IgnoreArguments()
  .Return(false);

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 10 Daughters, 2 Sons

    10 Daughters

    10 Mart 2009
  • natescamp

    natescamp

    30 NİSAN 2009
  • Project Mooncircle

    Project Moon

    6 Aralık 2009