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