Swift テスト完了ハンドラ
著者はXCTestのケースをSwift Testingに移行しようとしていますが、コンプリーションハンドラーに依存するテストコードで問題が発生しました。コードでは、コアデータストアを非同期でロードするためのカスタムNSPersistentContainerサブクラスを使用しています。XCTestでは、著者は非同期操作をテストするために期待メカニズムを使用しました。XCTestフレームワークは、期待を生成し、それを満たしたとマークし、タイムアウト内にそれが満たされるまで待つ方法を提供します。しかし、Swift Testingでは期待は使用されず、確認はコンプリーションハンドラーのテストには適していません。テストを移行するために、著者はSwiftの継続を使用して、コンプリーションハンドラーの呼び出しを非同期互換の呼び出しに変換します。このアプローチはXCTestでも使用できますが、継続メソッドの呼び出しに失敗するとテストがハングする可能性があり、継続は1回だけ呼び出される必要があります。テストはXCTestのアサーションを#expectに置き換えることで簡単にSwift Testingに移行できます。結果として得られるテストでは、Swiftの継続を使用して非同期操作をテストし、期待される結果をアサートします。