Hari ini saya ingin cepat memberi tahu Anda cara menguji kode asinkron.
Bayangkan situasi yang Anda butuhkan untuk mengunduh data dari Internet dan memeriksa apakah semuanya berfungsi dengan baik, atau tugas lain yang berjalan secara tidak sinkron. Dan bagaimana cara mengujinya? Bagaimana jika Anda mencoba yang sama dengan kode sinkron biasa ?!
func testAscynFunction() { someAsyncFunction() } func someAsyncFunction() { let bg = DispatchQueue.global(qos: .background) bg.asyncAfter(deadline: .now() + 5) { XCTAssert(false, "Something went wrong") } }
Tes semacam itu akan mengembalikan hasil positif kepada kami, karena metode ini tidak akan menunggu semua tugas asinkron kami.
Untuk memecahkan masalah seperti itu dalam tes, ada satu hal hebat:
Ekspektasi XCTest
XCTestExpectation menetapkan berapa kali metode asinkron harus dieksekusi, dan hanya setelah semua eksekusi ini tes akan berakhir dan memberi tahu apakah ada kesalahan. Berikut ini sebuah contoh:
class TestAsyncTests: XCTestCase {
Saya harap posting ini bermanfaat bagi seseorang.