【问题标题】:RxSwift Observing test cases on mocked UserDefaultsRxSwift 在模拟的 UserDefaults 上观察测试用例
【发布时间】:2019-06-23 12:45:47
【问题描述】:

我正在观察 userDefaults 中的值变化

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

对于单元测试,我做了 userDefaultsMock,我没有知道如何在为这些特定键更新或设置值时发出

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

【问题讨论】:

    标签: ios swift unit-testing mocking rx-swift


    【解决方案1】:

    Observable 链以副作用开始(例如您发布的observe(_:_:))并以副作用结束(无论订阅中的内容。)链的开头和结尾之间的所有内容都是逻辑 [ 1]。将该逻辑移到一个单独的函数中,这样您就可以在没有模拟的情况下对其进行测试。

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

    【讨论】:

      【解决方案2】:

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

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

      所以这个技巧帮助我作为 observable 得到通知。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-07-25
        • 2017-01-30
        • 2017-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        相关资源
        最近更新 更多