在 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 中逐一发出项目