我在項目中使用ModelView-ViewModel
我目前的工作和使用RxSwift
,RxBlocking
& RxTests
測試視圖模型。目前我正在嘗試測試ViewModel,但有許多麻煩讓我想起這件事。與RxSwift
所以可以說我有我的ExampleViewController
的ExampleViewModel
。我的ExampleViewModel
期待一個Observable
流是兩個流從UITextField
的組合(combineLatest
),一個是如果文本框或者是聚焦而另一個是文本的流;所以像Observable<(Bool, String)>
。取決於是否重點和字符串的上下文我的ExampleViewModel
將發出一個事件到其內部暴露的屬性,這是Observable
UITextField
的backgroundColor狀態; 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
重點和文字輸入。
感謝