为使用Prism并使用ThreadOption.UIThread请求事件的类创建Fake

时间:2014-11-06 02:29:05

标签: unit-testing prism microsoft-fakes

我们正在从Prism 4.1迁移到5.突然出现的一个项目是我们为单元测试创​​建一个Stub EventAggregator(Microsoft Fakes)。 EventAggregator在目标类中设置,一些订阅者使用

进行设置
_eventAggregator.GetEvent<RangeChangedEvent>().Subscribe(UpdateDisplay,
                    ThreadOption.UIThread,
                    false,
                    args => args.ID == ID);

单元测试与Prism 4.1一起工作正常。但是,现在我在运行单元测试时在Prism 5中得到了这个例外。

  

System.InvalidOperationException:要使用UIThread选项进行订阅,必须在UI线程上构造EventAggregator ..

那么,有没有办法获得Prism认为UI线程的参考?或者告诉prism单元测试线程是UI线程的一种方法?或者我是否需要订阅发布线程并在“UpdateDisplay”方法中测试Dispatcher?

感谢。

1 个答案:

答案 0 :(得分:0)

如果您正在使用Nunit,您可以使用RequiresSTA属性修饰您的测试夹具类,这将使testrunner使用UI线程,并希望它应该为您解决问题。