RX + MOQ + TestScheduler - PullRequest
       28

RX + MOQ + TestScheduler

2 голосов
/ 08 ноября 2011

Допустим, у меня есть:

  • проверяемый объект (он использует RX внутри);
  • количество зависимостей тестового объекта, которые также используют RX - созданный с использованием MOQ.

Вопрос в следующем: Является ли это ошибочным подходом к использованию одного и того же экземпляра TestScheduler для контроля времени внутри тестового объекта и для внешних наблюдаемых?

Заранее спасибо

1 Ответ

6 голосов
/ 08 ноября 2011

Для любого конкретного теста вы должны (и должны!) Использовать тот же TestScheduler для каждого объекта / метода, который требует / может принять IScheduler, иначе это не работает. ™ 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.
});
...