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 パターンを使用してこのタスクを待機しています。
クラスをテストしたいので、モック、begin メソッド、end メソッド、および戻り値を受け取り、必要な戻り値を最終的に返すようにモックをセットアップするメソッドを作成する必要があります。
使用例:
SetupAsync(mock, mocked => mocked.BeginSomeMethod, mocked=> mocked.EndSomeMethod, 7);
これにより、任意の int 引数を持つ非同期フローが 7 を返します。moq でそのようなことを達成する方法がわかりません。