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

  • Animation Workshop

    Animation Wo

    8 NİSAN 2010
  • Canal de arkyoru

    Canal de ark

    18 Ocak 2007
  • NYCarspotter

    NYCarspotter

    26 EYLÜL 2011