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

  • Kevin Bruckert

    Kevin Brucke

    30 Aralık 2006
  • Matt Harding

    Matt Harding

    23 Mayıs 2006
  • pissengehen

    pissengehen

    26 EYLÜL 2006