假设我有一些 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 中引入的新异步/等待模式来创建任务,然后等待该任务。
我想测试我的类,因此我需要编写一个方法来接收模拟、开始方法、结束方法和返回值,并设置模拟以便最终返回所需的返回值。
示例用法:
SetupAsync(mock, mocked => mocked.BeginSomeMethod, mocked=> mocked.EndSomeMethod, 7);
这将导致带有任何 int 参数的异步流返回 7。我似乎无法弄清楚如何在 moq 中完成这样的事情。