我正在编写UI测试,我需要访问视图的@State属性,只要该视图内的按钮即可。
struct CircleImage: View {
@State var imageName: String = ""
var body: some View {
// ...
Button(action: {}) {}
.accessibility(identifier: "myButton")
}
}
照原样,我很容易获得带有let myButton = app.buttons["myButton"]
的按钮。但是出于测试目的,我还需要访问imageName
属性。我尝试在ContentView中添加CircleImage().accessibility(identifier: "circleImageView")
,但是它覆盖了CircleImage视图(包括按钮)中的所有可访问性(标识符:)。
我正在编写UI测试,我需要访问视图的@State属性,只要该视图内有一个按钮即可。 struct CircleImage:View {@State var imageName:String =“” var body:some View ...
UI测试不测试内部状态。他们仅测试UI可见的行为。要针对此类型编写UI测试,imageName应该会导致某些行为,然后测试该行为是否可见。在这种情况下,您可以使imageName转换为可访问性标签,这将允许VoiceOver读取它(顺便说一句,也允许UI测试访问它)。