9
我有一个类,大致是这样的:如何模拟这种异步方法?
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);
}
.
.
.
}
我想模仿我IWebService接口,这样,当BeginGetStaticReferenceData被称为它能够调用回调方法。我正在使用Moq,我无法解决如何做到这一点。我的单元测试设置的代码看起来是这样的:
//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);
.
.
真棒,这真是棒极了。谢谢! – Charlie
我试着调整这个UdpClient,并且它只有当我把你的回调从'=> callback = cb'改成'=> cb(ar)'时才起作用。不知道我是否已经入侵过怪物或什么... – Benjol
什么是上面的模拟类?是你的课程还是我需要添加一些参考来使用它? –