Às vezes, tenho que escrever testes que validam que algum valor muda eventualmente. Isso acontece, por exemplo, se eu preciso lidar com concorrência não estruturada. Aqui está um exemplo desse tipo de teste no XCTest:
let predicate = NSPredicate { service, _ in
guard let service = service as? SomeService else {
return false
}
return service.something == expectedValue
}
let expectation = XCTNSPredicateExpectation(predicate: predicate, object: service)
sut.doSomething(expectedValue)
wait(for: [expectation], timeout: 1.0)
Como seria possível escrever tais testes em Testes?
Dependendo da estrutura do seu código, você pode usar um Confirmation . Em casos simples, no entanto, o que eu faço é:
A última linha é, estritamente falando, logicamente desnecessária, mas, por uma questão de estilo e clareza, gosto de enfatizar esse ponto final afirmando uma expectativa positiva direta.
Esse movimento é tão comum no meu próprio código de teste que o incorporei em uma macro , para que eu possa escrever: