Вступить в клуб →
средняявопросАрхитектура, тесты и релиз

Тест на асинхронную загрузку всегда зелёный

func testLoadOrders() {
    let sut = OrdersViewModel(service: FakeOrdersService(count: 3))

    sut.onUpdate = {
        XCTAssertEqual(sut.orders.count, 3)
    }

    sut.load()   // результат приходит асинхронно
}

Тест проходит всегда, даже когда в загрузку намеренно вносят ошибку. Почему?

  • Тест зелёный, потому что фейковый сервис отдаёт данные мгновенно — проверка успевает выполниться
  • XCTAssertEqual нельзя вызывать из замыкания, такие проверки игнорируются
  • Метод теста завершается раньше замыкания, и проверка может не выполниться вовсе
  • Нужно добавить паузу на секунду в конце теста — это корректный способ дождаться асинхронного результата

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела