【问题标题】:How to test a private function inside an RxSwift observer?如何在 RxSwift 观察者中测试私有函数?
【发布时间】:2020-07-25 10:23:41
【问题描述】:
observable.subscribe(onNext: { _ in
    somePrivateFunction()
})

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

【问题讨论】:

  • RxSwift 库有一整套测试来确保 Observables 正常工作。包括测试以确保当 observable 发出下一个事件时,onNext 闭包被调用。如果您想测试 RxSwift 库本身,那么我建议您参考这些测试......但是,我怀疑这不是您真正想要测试的。告诉我们您真正想要确保的内容,也许我们可以为您提供帮助。

标签: ios swift rx-swift quick-nimble rxtest


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    相关资源
    最近更新 更多