Тест на асинхронную загрузку всегда зелёный
func testLoadOrders() {
let sut = OrdersViewModel(service: FakeOrdersService(count: 3))
sut.onUpdate = {
XCTAssertEqual(sut.orders.count, 3)
}
sut.load() // результат приходит асинхронно
}
Тест проходит всегда, даже когда в загрузку намеренно вносят ошибку. Почему?
- Тест зелёный, потому что фейковый сервис отдаёт данные мгновенно — проверка успевает выполниться
- XCTAssertEqual нельзя вызывать из замыкания, такие проверки игнорируются
- Метод теста завершается раньше замыкания, и проверка может не выполниться вовсе
- Нужно добавить паузу на секунду в конце теста — это корректный способ дождаться асинхронного результата
