在 RxSwift 中,我如何对 observable 未发送任何事件进行单元测试?

Posted

技术标签:

【中文标题】在 RxSwift 中,我如何对 observable 未发送任何事件进行单元测试?【英文标题】:In RxSwift, how can I unit test that an observable sent no event? 【发布时间】:2021-03-29 16:06:42 【问题描述】:

我是测试 un RxSwift 的新手。 我设法测试 Observable 是否使用 RxBlocking 发出值。但是如果 Observable 没有发送任何值,我找不到使测试通过的语法。

我想我应该使用toBlocking(timeout: ),但我找不到方法(我有一个错误,它超时,但测试失败)。

感谢您的帮助

【问题讨论】:

【参考方案1】:

你的 observable 完成了吗?看起来您正在测试可观察对象是否发出任何 events 而不是 values

假设您在 XCTest 框架上进行测试,

    如果您要测试可观察对象在完成之前是否不发出任何元素,
XCTAssertNil(try observable.toBlocking().first())
    如果您正在测试 observable 是否没有发出任何元素,也没有完成
// Check error if necessary
XCTAssertThrowsError(try observable.toBlocking(timeout: timeout).first()) 

【讨论】:

啊,是的!我不知道您可以使用 XCTAssertThrowsError 检查错误类型。谢谢!

以上是关于在 RxSwift 中,我如何对 observable 未发送任何事件进行单元测试?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 RxSwift 为空 tableView 显示 backgroundVIew

如何使用 RxSwift disposeBag 防止 UITableViewCell 中重复的 UIButton 点击

如何在 RxSwift 中延迟从 Collection 中逐一发出项目

我应该如何访问有关用于使用RxSwift和MVVM填充表格视图的数组的数据

如何在 RxSwift 中取消订阅 Observable?

使用 RxSwift 的 TabelView 委托方法