Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在UI测试我的SwiftUI应用程序时,如何访问VStack_Swiftui_Xctest_Xcuitest - Fatal编程技术网

在UI测试我的SwiftUI应用程序时,如何访问VStack

在UI测试我的SwiftUI应用程序时,如何访问VStack,swiftui,xctest,xcuitest,Swiftui,Xctest,Xcuitest,我有一个VStack,其中代码依赖于.ontapsignate方法。大概是这样的: VStack{ 如果图像显示{ 图像(“图像1”) } 否则{ 图像(“图像2”) } } .ontapsigne{ imageShow.toggle() } 我想使用XCTest在UI测试中测试这种行为。问题是,我不知道如何访问VStack以便对其应用.tap()。我似乎找不到附加到app的方法。使用app.buttons[]可以找到一个按钮,但是app.VStack或app.HStack似乎没有对应的按钮

我有一个
VStack
,其中代码依赖于
.ontapsignate
方法。大概是这样的:

VStack{
如果图像显示{
图像(“图像1”)
}
否则{
图像(“图像2”)
}
}
.ontapsigne{
imageShow.toggle()
}
我想使用XCTest在UI测试中测试这种行为。问题是,我不知道如何访问VStack以便对其应用
.tap()
。我似乎找不到附加到
app
的方法。使用
app.buttons[]
可以找到一个按钮,但是
app.VStack
app.HStack
似乎没有对应的按钮

此外,我还尝试将此代码转换为将
VStack
包装在
按钮中,但由于某种原因,这会覆盖我的图像,扭曲首选行为

使用我正在使用的完整
VStack
代码片段更新:

VStack(对齐:。前导,间距:0){
ZStack{
如果self.create\u event\u vm.everyone\u toggle==true{
图像(“登录背景”)
.可调整大小()
.可访问性(标识符:“每个人\u切换\u背景”)
}
HStack{
VStack(对齐:。前导,间距:0){
文本(“Hithr上的每个人都可以看到”)
.kerning(0.8)
.scaledFont(名称:“Gotham中等”,大小:18)。foregroundColor(self.create\u event\u vm.everyone\u toggle?Color.white:Color.black)
.frame(对齐:。前导)
文本(“公共事件”)
.kerning(0.5)
.scaledFont(名称:“Gotham Light”,大小:16)
.foregroundColor(self.create\u event\u vm.everyone\u toggle?Color.white:Color.black)
.frame(对齐:。前导)
}
.padding(.leading)
垫片()
}
}
}
.frame(最大宽度:无穷大,最大高度:74)
.ontapsigne{
self.create\u event\u vm.everyone\u toggle.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)

它给了我以下错误:
无法获取匹配的快照:为
找到了多个匹配元素。它似乎将自身附加到VStack中的每个
Text()
视图。您可以使用app.buttons[“something”].firstMatch绕过发现的多个匹配元素。