Mam klasy, które z grubsza wygląda tak:Jak mogę kpić z tej asynchronicznej metody?
public class ViewModel
{
public ViewModel(IWebService service)
{
this.WebService = service;
}
private IWebService WebService{get;set;}
private IEnumerable<SomeData> MyData{get;set;}
private void GetReferenceData()
{
this.WebService.BeginGetStaticReferenceData(GetReferenceDataOnComplete, null);
}
private void GetReferenceDataOnComplete(IAsyncResult result)
{
this.MyData = this.WebService.EndGetStaticReferenceData(result);
}
.
.
.
}
chcę drwić mój interfejs IWebService tak, że kiedy BeginGetStaticReferenceData nazywa jest w stanie wywołać metodę wywołania zwrotnego. Używam Moq i nie mogę się dowiedzieć, jak to zrobić. Moje testy jednostkowe skonfigurować kod wygląda mniej więcej tak:
//Arrange
var service = new Mock<IWebService>();
service.Setup(x => x.BeginGetStaticReferenceData(/*.......don't know.....*/));
service.Setup(x => x.EndGetStaticReferenceData(It.IsAny<IAsyncResult>())).Returns(new List<SomeData>{new SomeData{Name="blah"}});
var viewModel = new ViewModel(service.Object);
.
.
niesamowite, to było wspaniałe. Dziękuję Ci! – Charlie
Próbowałem dostosować to dla UdpClient i działało to tylko wtedy, gdy zmieniłem twoje wywołanie zwrotne z '=> callback = cb' na' => cb (ar) '. Nie jestem pewien, czy zhackowałem potwora, czy co ... – Benjol
Co to jest klasa Mock dla powyższego? Czy jest to twoja klasa lub muszę dodać jakieś odniesienie do jej użycia? –