Hoje, quero lhe dizer rapidamente como testar código assíncrono.
Imagine a situação em que você precisa baixar dados da Internet e verifique se tudo funciona bem ou alguma outra tarefa que é executada de forma assíncrona. E como testá-lo? E se você tentar o mesmo que o código síncrono regular ?!
func testAscynFunction() { someAsyncFunction() } func someAsyncFunction() { let bg = DispatchQueue.global(qos: .background) bg.asyncAfter(deadline: .now() + 5) { XCTAssert(false, "Something went wrong") } }
Esse teste nos retornará um resultado positivo, pois o método não aguardará todas as nossas tarefas assíncronas.
Para resolver esse problema nos testes, há uma grande coisa:
XCTestExpectation
XCTestExpectation define quantas vezes o método assíncrono deve ser executado e somente após todas essas execuções o teste será encerrado e informará se houve algum erro. Aqui está um exemplo:
class TestAsyncTests: XCTestCase {
Espero que este post seja útil para alguém.