可以说我有:


要测试的对象(它在内部利用RX);
使用MOQ创建的也使用RX的测试对象依赖项的数量。


问题是:
使用相同的TestScheduler实例来控制测试对象内以及外部可观察对象的计时是错误的方法吗?

提前致谢

最佳答案

对于任何特定的测试,您应该(并且必须!)对需要/可以采用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.
});

关于moq - RX + MOQ + TestScheduler,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8047409/

10-12 04:56