假设我有一些APM (BeginXxx, EndXxx) 模式的异步方法 (作为一部分我正在调用的某个WCF服务代理):
public interface ISomeService
{
IAsyncResult BeginSomeMethod(int num, AsyncCallback callback, object state);
int EndSomeMethod(IAsyncResult ar);
}
我的实际代码使用Task.Factory.FromAsync
创建任务,然后使用在.NET 4.5中引入的新的async/await模式等待此任务。
我想测试我的类,因此我需要编写一个方法来接收模拟对象、开始方法、结束方法和返回值,并设置模拟对象,使其最终返回所需的返回值。
示例用法:
SetupAsync(mock, mocked => mocked.BeginSomeMethod, mocked=> mocked.EndSomeMethod, 7);
当任何整数参数引起异步流返回7时,需要进行翻译。 但我似乎无法弄清楚如何在moq中实现这样的事情。