我想通过模拟依赖项来编写一个单元测试用例。整体流程如下。
我们有WorklistLoader
一个 async 方法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
已订阅)。
我想测试with mocking LoadWorklistItemsAsync()
的方法。WorklistLoader
QueryManager.StartQueryTask()
这是我的问题。
- 为带有模拟的方法编写单元测试的最佳实践是什么
Async()
? - 如何为依赖项使用 TPL 的方法编写单元测试用例?(方法返回
Task
类型)
另一个问题是
- 如果我使用 Rhinomocks 模拟我的 QueryManager.StartQueryTask() 方法,它会是什么样子?(模拟代码。它必须引发progresschanged,完成事件并返回任务)。