2011-11-08 51 views
2

可以说我有:RX + MOQ + TestScheduler

  • 一个目的是进行测试(它利用RX内);
  • 测试对象相关性的数量,也利用RX - 使用MOQ创建。

的问题是: 这是使用相同的TestScheduler实例的测试对象内和外部观测控制定时错误的方法吗?

在此先感谢

回答

6

对于任何特定的测试,你应该(而且必须!)使用相同的 TestScheduler为每个对象/方法,需要/可以采取IScheduler,否则这是行不通的。 ™ReactiveUI做到这一点通过具有可以在测试时被覆盖全球“MainThreadScheduler”对象,所以你可以做这样的事情:

var oldSched = RxApp.MainThreadScheduler; 
RxApp.MainThreadScheduler = new TestScheduler(); 

// Do a Test, and make sure all your test and runtime code use RxApp schedulers 

RxApp.MainThreadScheduler = oldSched; 

或者,更优雅的RxUI方法是通过。随着()

(new TestScheduler()).With(sched => { 
    // Do a test here. 
});