依存関係をモックして単体テストケースを書きたいと思います。全体の流れは以下の通りです。
WorklistLoader
async method を持つ がありますLoadWorklistItemsAsync()
。このタスクを達成するWorklistLoader
には、下位層の API (モックしたい) に依存していますQueryManager.StartQueryTask()
。StartQueryTask()
は、ファイル システムにクエリを実行し、ProgressChanged()
定期的に を発生させ、最後に. を発生させる非同期メソッドでもありますCompletedEvent
。StartQueryTask()
TPL への参照を返しますTask
。
StartQueryTask
の署名
Task StartQueryTask(
"SomeId",
EventHandler<ProgressChanged> progressChanged,
EventHandler<QueryCompleted> queryCompleted);
がからイベントをWorklistLoader
受信すると、何らかの処理を行ってProgressChanged
からQueryManager
、そのProgressChanged
イベント (ViewModel
がサブスクライブしたもの) を発生させます。
LoadWorklistItemsAsync()
のメソッドWorklistLoader
をモック でテストしたいと思いQueryManager.StartQueryTask()
ます。
これが私の質問です。
Async()
モッキングを使用してメソッドの単体テストを作成するためのベスト プラクティスは何ですか?- 依存関係が TPL を使用するメソッドの単体テスト ケースの記述方法 (
Task
型を返すメソッド)
もう一つの質問は
- Rhinomocks を使用して QueryManager.StartQueryTask() メソッドをモックすると、どのようになりますか? (モックコード。progresschanged、completed イベントを発生させ、Task を返す必要があります)。