可以说我有:
要测试的对象(它在内部利用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/