我正在 Swift 的 View Controller 中对 iOS UIButton 的功能实现单元测试。该按钮的预期功能如下:
- 按钮最初的标题为“开始”
- 按下按钮后,标题变为“暂停”
简而言之,我想测试单击按钮后按钮的标题是否从“开始”更改为“暂停”。
因为系统在发生更改并在屏幕上呈现之前需要一些时间,所以我需要轮询一小段时间来检查按钮的当前标题,直到按钮标题更改或分配的时间为止已用完。
通常,我使用 Quick/Nimble 框架进行单元测试,并使用 expect(...).toEventually(...)
函数来测试这种轮询。但是,为了一致性,我的团队坚持使用 XCTest 框架,所以我必须找到一些优雅的方法来使用 XCTest 实现测试。
您对XCTest框架的实现有什么建议吗?
最佳答案
我能想到的一个解决方案是使用NSTimer
,它每隔一个小间隔触发一次条件检查,直到指定的时间用完,并使用XCTestExpectation
和 waitForExpectationsWithTimeout
以等待完成。 (查看有关 XCTestExpectation 的更多信息 here )
有没有更好的方法来实现这个单元测试?
关于iOS:使用 XCTest 对 UIViewController 组件进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32692003/