Swift 테스트 완료 핸들러 노트

Swift 테스트 완료 핸들러

작가는 XCTest 케이스를 Swift Testing으로 마이그레이션하고 있지만, 완료 핸들러에 의존하는 테스트 코드에서 문제가 발생했습니다. 코드는 커스텀 NSPersistentContainer 하위 클래스를 사용하여 코어 데이터 저장소를 비동기적으로 로드하고 완료 핸들러를 사용합니다. XCTest에서 작가는 비동기 작업을 테스트하기 위해 기대 메커니즘을 사용했습니다. XCTest 프레임워크는 기대를 생성하고, 이를 충족시킨 것으로 표시하고, 타임아웃 내에 충족되기를 기다리는 방법을 제공합니다. 그러나 Swift Testing은 기대를 사용하지 않으며, 확인은 완료 핸들러를 테스트하는 데 적합하지 않습니다. 테스트를 마이그레이션하기 위해 작가는 Swift 연속성을 사용하여 완료 핸들러 호출을 비동기 호환 호출로 변환합니다. 이 접근 방식은 XCTest에서도 사용할 수 있으며, 기대를 사용할 필요가 없습니다. 그러나 이 접근 방식의 단점은 연속성 메서드를 호출하지 않으면 테스트가 중단될 수 있으며, 연속성은 정확히 한 번 호출되어야 합니다. 테스트는 XCTest 어설션을 #expect으로 대체하여 Swift Testing으로 쉽게 마이그레이션할 수 있습니다. 결과 테스트는 Swift 연속성을 사용하여 비동기 작업을 테스트하고 예상 결과를 어설션합니다.