探索 SwiftUI 视图的秘密:ViewInspector 助手来啦!
在 Swift 开发领域,特别是 SwiftUI 的世界里,测试视图的逻辑一直是一项挑战。不过,今天有一个好消息——我们有了一个强大的新工具:ViewInspector。这个开源库专为 SwiftUI 的单元测试而设计,允许我们在运行时遍历和检查视图层级,直接访问底层 View
结构体。
项目介绍
ViewInspector 是一款适用于 iOS、macOS、tvOS、watchOS 和 visionOS 平台的库,它填补了我们无法验证 SwiftUI 视图输出的空白。这款工具使我们可以对视图进行深度洞察,不仅能够搜索特定类型的视图或满足特定条件的视图,还能读取标准视图的内部状态,甚至验证自定义视图的状态,并触发侧边效果。
技术分析
ViewInspector 利用了 Swift 的反射 API 来解剖视图结构,因此它是安全的,即使将测试目标部署到生产环境也不必担心。该库提供了多种功能,如查找并操作视图、检查和修改视图状态以及模拟用户交互。对于支持的视图和修饰符,你可以参考其 API 覆盖率文档。
应用场景
- 快速定位视图:通过
find
函数,你可以轻松找到指定的视图或者断言不存在这样的视图。 - 查看标准视图状态:现在,你可以读取 Text、Button 等标准视图的属性,例如文本内容、字体等。
- 验证自定义视图:获取任何深度的自定义视图实例,以检查其当前状态,比如绑定的 ViewModel 数据。
- 模拟用户交互:触发系统的回调,例如点击按钮,调用列表项的
onAppear
方法,以便测试异步视图行为。
项目特点
- 广泛的兼容性:覆盖 SwiftUI v1 至 v3 的大部分 API,