让我说我有:
问题是: 这是一种错误的方法,使用相同的TestScheduler实例来控制测试对象和外部可观察对象的时间吗?
提前致谢
答案 0 :(得分:6)
对于任何特定测试,您应该(并且必须!)对需要/可以使用IScheduler的每个对象/方法使用相同 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.
});