首页 > 解决方案 > 如何在 RxSwift 观察者中测试私有函数?

问题描述

observable.subscribe(onNext: { _ in
    somePrivateFunction()
})

什么是 RxSwift 方法来测试当observable接收到事件时somePrivateFunction实际是否被调用?由于订阅和函数在同一个类中,我无法模拟它。

标签: iosswiftrx-swiftquick-nimblerxtest

解决方案


您需要检查是否有任何逻辑放置在可以阻止调用此函数的订阅中。如果有 - 可能值得将其提取到参数(例如过滤器),以便逻辑可以成为流本身的一部分。

我假设 observable(源)是从另一个组件注入/重定向的(如果不是,很可能应该是)。要模拟您可以使用的信号TestableObservable,您可以在此处阅读更多信息:http: //adamborek.com/rxtests-rxactionsheet/

最后但并非最不重要的一点 - 你需要确定什么样的行动somePrivateFunction()。如果它设置了一些外部值 - 那么您可以从该函数测试该传出连接。如果它设置了一些内部标志 - 您可以测试该标志的值是否已更改。


推荐阅读