Это всегда хорошая идея для тестирования вашего кода, но с наблюдаемыми может быть немного сложно, если весь ваш код находится в одном методе или блоке кода.
Вы должны попытаться выделить компоненты этого запроса - и для меня есть три компонента:
- Параметры
- Наблюдаемые
- Наблюдатель
Итак, напишите тесты, чтобы убедиться, что вы получаете правильные значения параметров.
Затем напишите тесты, которые гарантируют, что ваш запрос выдает значения в соответствии с аналогичным набором входных значений. Я не написал бы тест, который должен ждать час, чтобы получить значение, поэтому меняйте часы на секунды и т. Д.
Затем напишите тесты, чтобы убедиться, что наблюдатель работает.
Теперь, что касается написания интерфейса / реализации IObservableService
, я думаю, что это не очень хорошая вещь. Вместо этого я бы сосредоточился на написании одного или нескольких сервисов, которые абстрагируют то, что вы пытаетесь сделать на функциональной основе, чтобы вы были СУХИМ (не повторяйте себя).
Итак, я думаю, что ITimerService
может быть полезным.
public interface ITimerService
{
IDisposable Subscribe(TimeSpan dueTime, TimeSpan period, Action action);
}
Очевидно, что оно разработано для использования с Rx - подпись похожа на Observable.Timer
с крестиком IObservable.Subscribe
. Он будет использовать ваш существующий запрос, просто сделанный для использования входных параметров.
Тестирование этого кода должно показаться вам довольно простым.
Дайте мне знать, если это хорошая отправная точка для вас.