ContentView.swift
struct ContentView: View {
@Environment(\.dismiss) private var dismiss
var body: some View {
NavigationView {
ZStack {
ChildView(parentDismiss: dismiss)
Button {
dismiss()
} label: {
Text("close")
}
}
}
}
}
ChildView.swift
struct ChildView: View {
let parentDismiss: DismissAction
var body: some View {
Button {
parentDismiss()
} label: {
Text("Close")
}
}
}
To write snapshot tests for ChildView, how do I go about creating a DismissAction instance?
class ChildViewSnapshotTests: XCTestCase {
func testView() {
let dismissAction = DismissAction()
let view = ChildView(parentDimiss: dismissAction)
assertSnapshot(view: view)
}
}
I was hoping to be able to do something like above. But DismissAction cant be initialised this way
From the context, it seems like you don't need a
DismissActionthat does a particular thing. You just want any instance ofDismissActionso that you can create an instance ofChildView. In that case, you can get a "default"DismissActionby usingAlternatively, allow
ChildViewto take an optionalDismissAction. If it is nil, do nothing:If you do need to pass a
DismissActionthat does a particular thing, you would need to pass a() -> VoidtoChildViewinstead.