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

  • aki6336

    aki6336

    14 AĞUSTOS 2008
  • André Frizzo

    André Frizz

    16 Aralık 2006
  • Māris Zaharovs

    Māris Zahar

    28 Mayıs 2008