繁体   English   中英

RxSwift在模拟的UserDefaults上观察测试用例

[英]RxSwift Observing test cases on mocked UserDefaults

我正在观察userDefaults中的值更改

userDefaults.rx.observe(Int.self, option.userDefaultsKey)

对于单元测试,我做了userDefaultsMock,但是当更新或设置这些特定键的值时,我不知道如何发出

 override func setValue(_ value: Any?, forKey key: String) {
        tempArray[key] = value
    }

Observable链以副作用(例如您发布的observe(_:_:) )开头,并以副作用(无论订阅中的内容是什么)结束。在链的开头和结尾之间的所有内容都是逻辑[1]。 将该逻辑移至单独的函数,以便无需进行模拟即可对其进行测试。

[1]此规则的几个例外是do()调用和flatMap调用。 其他所有内容都是需要测试的逻辑。

实际上,我无法模拟rx.observe但是做了一些工作来完成。

我使用了UserDefaults但是使用了suiteName所以不会打扰standard database

因此,这一技巧帮助我观察到了通知。

我从https://medium.com/@davidlin_98861/testing-userdefaults-cd86849fd896了解到

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM