我有一个VStack
,其代码依赖于.onTapGesture
方法。像这样的东西:
VStack {
if imageShow {
Image("image1")
}
else {
Image("image2")
}
}
.onTapGesture {
imageShow.toggle()
}
我想使用XCTest在UI测试中测试此行为。问题是,我不知道如何访问VStack以便对其应用.tap()
。我似乎找不到app
附带的方法。使用app.buttons[]
找到了一个按钮,但是app.VStack
或app.HStack
似乎没有等效按钮。
[此外,我尝试转换此代码以将VStack
包装在Button
中,但是由于某些原因,这会覆盖我的图像,从而扭曲了首选行为。
使用我正在使用的完整VStack
代码段进行更新:
VStack(alignment: .leading, spacing: 0) {
ZStack {
if self.create_event_vm.everyone_toggle == true {
Image("loginBackground")
.resizable()
.accessibility(identifier: "everyone_toggle_background")
}
HStack {
VStack(alignment: .leading, spacing: 0) {
Text("Visible to everyone on Hithr")
.kerning(0.8)
.scaledFont(name: "Gotham Medium", size: 18) .foregroundColor(self.create_event_vm.everyone_toggle ? Color.white : Color.black)
.frame(alignment: .leading)
Text("Public event")
.kerning(0.5)
.scaledFont(name: "Gotham Light", size: 16)
.foregroundColor(self.create_event_vm.everyone_toggle ? Color.white : Color.black)
.frame(alignment: .leading)
}
.padding(.leading)
Spacer()
}
}
}
.frame(maxWidth: .infinity, maxHeight: 74)
.onTapGesture {
self.create_event_vm.everyone_toggle.toggle()
}
.accessibility(identifier: "public_event_toggle")
.accessibility(addTraits: .isButton)
尝试以下方法
VStack {
if imageShow {
Image("image1")
}
else {
Image("image2")
}
}
.onTapGesture {
imageShow.toggle()
}
.accessibility(addTraits: .isButton)
.accessibility(identifier: "customButton")
和测试
XCTAssertTrue(app.buttons["customButton"].exists)