2013-03-06 16 views
8

Benim sınamam için, bir nesne döndürmek için bir sapta ilk aramayı ve sonraki nesneyi farklı bir nesne döndürmek için aramam gerekiyor. Bunu diğer sahte nesne çerçevelerinde record() bloklarında görmüştüm ama bunu FakeItEasy'de nasıl yapacağımı anlayamadım. FakeItEasy mağazamızdaki zorunlu bir çerçevedir ve sahte üretimler için AutoFixture kullanıyorum.FakeItEasy'den farklı nesneleri döndür A.CallTo()

NextCall'a baktım, ancak bir dönüş değeri belirtebilirim gibi görünmüyor. Herhangi bir yardım takdir

ReceiveMessageResponse queueResponse1 = fixture.Create<ReceiveMessageResponse>(); 
ReceiveMessageResponse queueResponse2 = fixture.Create<ReceiveMessageResponse>(seed); 
A.CallTo(() => sqsClient.ReceiveMessage(null)).WithAnyArguments().Returns(queueResponse1); 
//The following should happen the second time... 
A.CallTo(() => sqsClient.ReceiveMessage(null)).WithAnyArguments().Returns(queueResponse2); 

: Burada

ben yapmak istiyorum ne bir fikirdir.

cevap

14
bunu yapmak için iki yol

, bunlardan biri kendi cevap bakın biridir ikinci yaklaşımda

A.CallTo(() => foo.Bar()).Returns(response2); 
A.CallTo(() => foo.Bar()).Returns(response1).Once(); 
+0

Satın almak için önemlidir işe yarıyor – Fabio

7

Ve tabi ki her seferinde olur. Birkaç dakika içinde cevapları kendi başıma görüyorum.

kullanıyorum sona erdi:

ReturnsNextFromSequence(new [] {queueResponse1, queueResponse2}); 

Ben tercih edilen yöntem olduğundan emin değilim, ama bu benim için iyi çalışıyor.

A.CallTo(() => foo.Bar()).ReturnsNextFromSequence(new[] { response1, response2 }); 

diğer yoludur::

İlgili konular