如何对使用System.Windows.Threading.Dispatcher
的课程进行单元测试?
我在WPF的设置中遵循MVVM模式。作为其中的一部分,我正在按照我在this video中看到的用于DispatchingBlah
的模式创建一个DispatchingQuoteSource
类(见1:06:16 ish)。
我想测试我的类已将正确的东西排队到调度程序对象,但我无法弄清楚如何执行此操作。我(我可以找到)无法同步刷新队列以查看排队对象的效果。我也无法查看如何查询队列以检查已添加的内容。
我是否需要围绕System.Windows.Threading.Dispatcher
类编写一些界面?
答案 0 :(得分:0)
我将调度程序类隐藏在接口后面,并使用模拟调度程序(或只是手动假冒)进行测试。这样,您可以验证是否进行了正确的调用,而无需尝试实际测试实际的调度程序。
当然,这是假设您要测试VM,并且您信任调度程序。即使在这种情况下,最好还是单独测试调度员。
答案 1 :(得分:0)
实际上,已存在比调度程序类周围的接口更好的解决方案。它被称为SynchronizationContext。这是Dispatcher理念的抽象,也适用于Windows窗体(使用ISynchronizeInvoke
)。因此,您还可以获得为您的课程增加可重用性的好处。
Nito.Async库有几种在使用SynchronizationContext
进行单元测试时非常有用的类型;它有许多使用这些类的单元测试。