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

  • graham025

    graham025

    25 NİSAN 2006
  • KliptOut KwazeeKilla

    KliptOut Kwa

    24 ŞUBAT 2010
  • movies95

    movies95

    27 Kasım 2006