假设我有:
- 要测试的对象(它在内部使用RX);
- 使用RX的测试对象依赖的数量-使用MOQ创建。
问题是:使用相同的TestScheduler实例来控制测试对象和外部可观察对象的计时,这是一种错误的方法吗?
Thanks in advance
对于任何特定的测试,您应该(而且必须!)对每个需要/可以接受isscheduler的对象/方法使用相同的 TestScheduler,否则它不会工作。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方式是通过。with ()
(new TestScheduler()).With(sched => {
// Do a test here.
});