gpt4 book ai didi

swift - RxSwift,为什么不使用 .never() 进行测试

转载 作者:行者123 更新时间:2023-11-28 12:04:25 25 4
gpt4 key购买 nike

我正在学习教程:

https://marcosantadev.com/mvvmc-with-swift/

里面讲的是MVVM-C设计模式。我很难理解如何以及为什么在那里使用 .never() observable(以及通常为什么我们要使用 .never() 除了测试超时)。

谁能给出一个在 swift 代码(不是在测试中)中观察到的 .never() 用法的合理示例,并解释为什么它是必要的以及有哪些替代方案?

最佳答案

我处理从 View 到 ViewModel 的所有操作。用户点击按钮?很好,信号被传送到 ViewModel。这就是为什么我在 ViewModel 中有多个输入 observable。所有的可观察值都是可选的。它们是可选的,因为有时我编写测试并且真的不想提供所有伪造的可观察对象来测试某个单一功能。因此,我将其他可观察对象作为 nil 提供。但是使用 nil 不是很方便,所以我为所有 optional observables 提供了一些默认行为,如下所示:

private extension ViewModel {

func observableNavigation() -> Observable<Navigation.Button> {
return viewOutputFactory().observableNavigation ?? Observable.never()
}

func observableViewState() -> Observable<ViewState> {
return viewOutputFactory().observableViewState ?? Observable.just(.didAppear)
}
}

如您所见,如果我为 observableViewState 传递了 nil,我会将其替换为 just(.didAppear),因为 ViewModel 逻辑在很大程度上取决于论状态。另一方面,如果我为 observableNavigation 传递了 nil,我会提供 never(),因为我假设不会触发导航按钮。

但这整个故事只是我的观点。我敢打赌,您会找到自己的地方来使用这个 never 运算符。

关于swift - RxSwift,为什么不使用 .never() 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49683502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com