2011-11-08 99 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. 
});