私ModelView-ViewModel
は現在作業しているプロジェクトで使用しておりRxSwift
、RxBlocking
&を使用していRxTests
ます。現在、私は ViewModel をテストしようとしていますが、これを回避するには多くの問題があります。
だから私は私の を持っているとExampleViewModel
しましょうExampleViewController
。Myは、 からの 2 つのストリームの組み合わせ ( ) でExampleViewModel
あるストリームを期待しています。のようなものです。フォーカスされているかどうか、および文字列のコンテキストに応じて、myは内部的に公開されたプロパティにイベントを発行します。これは、の backgroundColor の状態です。.Observable
combineLatest
UITextField
Observable<(Bool, String)>
ExampleViewModel
Observable
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
ありがとう