Problem Description
I am facing an issue while trying to test a SwiftUI view with a toggle action using XCTest. The test is failing, particularly in the last XCTAssertTrue
statement, and it seems to be related to the asynchronous nature of SwiftUI updates.
Is there any way to make the test work?
Code Snippets
Here's a simplified version of my code:
// XCTest Code
final class ToggleTests: XCTestCase {
func testToggleAction() {
// Given
let view = ToggleView()
XCTAssertFalse(view.toggle)
// When
view.handleToggleAction()
// Then
XCTAssertTrue(view.toggle)
}
}
// SwiftUI View
struct ToggleView {
@State private(set) var toggle: Bool = false
func handleToggleAction() {
self.toggle = true
}
}
extension ToggleView: View {
var body: some View {
Button("Toggle") {
self.handleToggleAction()
}
}
}