Я использую ModelView-ViewModel
в проекте я работаю и с помощью RxSwift
, RxBlocking
& RxTests
. В настоящее время я пытаюсь проверить ViewModel, но у меня много проблем, чтобы обдумать это.тестирование ViewModel с RxSwift
Так скажем, у меня есть ExampleViewModel
для моего ExampleViewController
. Мой ExampleViewModel
ожидает поток Observable
, который представляет собой комбинацию (combineLatest
) двух потоков от UITextField
, причем одно из них, если textField либо сфокусировано, а другое - поток текста; так что-то вроде Observable<(Bool, String)>
. В зависимости от того, сфокусирован ли и контекст строки, мой ExampleViewModel
будет излучать событие в его внутренне открытое свойство, которое является Observable
состоянием фона backgroundColor UITextField
; Observable<UIColor>
.
ExampleViewModel.swift
:
class ExampleViewModel {
private let disposeBag = DisposeBag()
private let _textFieldColor: PublishSubject<UIColor>
var textFieldColor: Observable<UIColor> { get { return self._textFieldColor.asObservable() } }
init(textFieldObservable: Observable<(Bool, String)>) {
textFieldObservable.subscribeNext { (focus, text) in
self.validateTextField(focus, text: text)
}.addDisposableTo(self.disposeBag)
}
func validateTextField(focus: Bool, text: String) {
if !focus && !text.isEmpty {
self._textFieldColor.onNext(UIColor.whiteColor())
} else {
self._textFieldColor.onNext(UIColor.redColor())
}
}
}
(жаль, что я не знаю, как отформатировать его правильно)
В основном я хотел бы проверить ExampleViewModel
класс и тест, который он испускает правильный UIColor
путем регулирования фокус и текстовые входы.
Благодаря