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

  • 3dmmfavs

    3dmmfavs

    29 Kasım 2009
  • dougownsall

    dougownsall

    7 EKİM 2007
  • How To Cook That

    How To Cook

    16 NİSAN 2011