RX + MOQ + TestScheduler

bor*_*kpe 2 moq system.reactive

让我们说:

  • 一个待测对象(它内部使用RX);
  • 使用RX的测试对象依赖项的数量 - 使用MOQ创建.

问题是:这是一种错误的方法,使用相同的TestScheduler实例来控制测试对象和外部可观察对象的时间吗?

提前致谢

Ana*_*tts 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;
Run Code Online (Sandbox Code Playgroud)

或者,更优雅的RxUI方式是通过.With()

(new TestScheduler()).With(sched => {
    // Do a test here.
});
Run Code Online (Sandbox Code Playgroud)