依存関係をモックして単体テストケースを書きたいと思います。全体の流れは以下の通りです。
WorklistLoaderasync 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 を返す必要があります)。