这是我第一次使用RxTest,我正在努力如何执行以下方法:
protocol ViewModelType {
func transform(input: ViewModel.Input) -> ViewModel.Output
}
struct ViewModel: ViewModelType {
private let isLoading = PublishSubject<Bool>()
struct Input {
let trigger: PublishSubject<Void>
}
struct Output {
let someAction: Observable<Void>
let isLoading: Observable<Bool>
}
func transform(input: Input) -> Output {
let someAction = input
.trigger
.do(onNext: { _ in
self.isLoading.onNext(true)
//do some async task
self.isLoading.onNext(false)
})
return Output(someAction: someAction, isLoading: isLoading)
}
}
我在 viewModel 中创建了一个 Publish Subject 来通知视图何时应该显示加载器。
一切正常,除了我不知道如何使用 RxTest 框架对其进行测试。
我试图使用调度程序和冷可观察但无法使其工作。
我想拥有的:
- 使用调度程序将 .next(10, ()) 发送到触发器。
- 以某种方式记录 isLoading 的事件并断言先为真然后为假的相等。像这样:[.next(10, true), .next(20, false)]。
也许,我这样做的 isLoading 方式,它是不可测试的。但似乎它正在通过输出输出,我认为也许有某种方式。
非常感谢,如果有不清楚的地方,请随时编辑或指导我提出更好的问题。非常感激。