私のビューをテストするときに、私はこの問題に出くわした:私のViewModelでRxSwiftとXCTestでSwiftのメインスレッドに入る関数をテストするには?
私は、非同期操作に呼び出し、応答が到着したとき、私は私のビューの変化を生成するためにPublishSubject
を使用しています。私の見解では、ボタンを隠すか、または表示するためにDispatchQueue.main.async
に電話します。
のViewModel
let refreshButtons = PublishSubject<Bool>(true)
refreshButtons.onNext(true)
ビュー
model.refreshButtons.asObservable()
.subscribe(onNext: {
[unowned self] success in
self.updateButtons(success)
})
.addDisposableTo(disposable)
private func updateButtons(_ show:Bool) {
DispatchQueue.main.async{
button.isHidden = !show
}
}
今、私はどのようにユニットrefreshButtons.onNext(true)
は非表示にしたり、私のボタンが表示されますことをテストをするのか分かりません。
- メソッドをオーバーライドし、非同期期待を持つが、そのために私は、メソッドの国民は、私が何を望んでいないようにする必要があり、または
- 派遣:私は考えることができる
ソリューションがあります私のViewModelのメインキューではなく、ビューではなく、それは私にとって奇妙に聞こえるものですが、大丈夫かもしれません。
どうすればこの問題を解決できますか? ありがとうございます。
このソリューションは完全に機能します。 ご協力いただきありがとうございます。 – Jefe55
私の喜び@ Jefe55、喜んで役立つ:) – mokagio