SORU
21 Ocak 2014, Salı


Kur Adedi Çerçevesinde Görev zaman uyumsuz geri arama

Beyan ettiği bir arayüzü var

Task DoSomethingAsync();

Benim testler için MoqFramework kullanıyorum:

[TestMethod()]
public async Task MyAsyncTest()
{
   Mock<ISomeInterface> mock = new Mock<ISomeInterface>();
   mock.Setup(arg => arg.DoSomethingAsync()).Callback(() => { <my code here> });
   ...
}

Benim test await DoSomethingAsync() çağıran kodu çalıştırın. Ve bu test sadece bu hat üzerinde başarısız olur. Neyi yanlış yapıyorum?

CEVAP
21 Ocak 2014, Salı


Yöntemi .CallBack() kullanmak için bir sebep yok bu yüzden herhangi bir geri yok. Sadece istenen değerleri .Returns() Task.FromResult, örneğin kullanarak bir Görev dönebilirsiniz:

MyType someValue=...;
mock.Setup(arg=>arg.DoSomethingAsync())        
    .Returns(Task.FromResult(someValue));

Edit: Adedi 4.2 bu ile yardımcı olmak için iki yeni uzantı yöntemleri vardır.

mock.Setup(arg=>arg.DoSomethingAsync())
    .ReturnsAsync(someValue);

mock.Setup(arg=>arg.DoSomethingAsync())        
    .ThrowsAsync(new InvalidOperationException());

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Breno Rises

    Breno Rises

    7 Ocak 2014
  • funbro1

    funbro1

    11 Aralık 2007
  • Wild Academy

    Wild Academy

    8 Aralık 2009