Тестирование асинхронного модуля iOS (waitForExpectations failing) в xCode 8 / Swift 3

Я обновляю свой Cocoapod, который я разработал для использования Swift 3. До того, как я обновился, все мои асинхронные модульные тесты работали отлично. Но теперь, после обновления, каждый из них сразу же терпит неудачу, и я понятия не имею, почему. Вот что каждый из них структурирован как:

override func setUp() { super.setUp() validationExpectation = expectation(description: "Validation") } . . . func testSymbolRequest(){ _ = MyCocoapod.makeSymbolRequest(symbol: "ABC", success: { (symbolObject) in self.validationExpectation.fulfill() XCTAssert(true) }) { (error) in self.validationExpectation.fulfill() XCTFail(error.description) } waitForRequestToFinish() } . . . func waitForRequestToFinish(){ waitForExpectations(timeout: 60.0) { (error) in if let error = error { XCTFail(error.localizedDescription) } } } 

Функция waitForExpectations не ждет вообще. Он сразу же перестает быть вызванным. Я также подтвердил, что это не имеет никакого отношения к моему фактическому сетевому коду, и запросы отлично работают в моем примере проекта Cocoapod. Я использую Alamofire. Я не думаю, что это проблема, но я подумал, что это стоит упомянуть. Сообщение об ошибке, которое распечатывается, является «неизвестной ошибкой».

Если вы пытаетесь протестировать свой CocoaPod, который вы разрабатываете, по какой-то причине целевая цель тестирования по умолчанию, которую он создает, заставляет функцию waitForExpectations () работать неправильно для этой целевой цели тестирования. Я смог заставить его, наконец, работать, выполнив следующие шаги:

  1. Удалить текущую цель тестирования
  2. Создать новую цель тестирования
  3. Запустите установку pod и убедитесь, что файл pod обновлен соответствующим образом.

После этих шагов я смог получить waitForExpectations (), чтобы, наконец, работать в моих сетевых запросах.

  • Как установить XCTest для запуска на устройстве
  • Тестирование XCTest для вызываемых методов делегатов
  • Единичное тестирование
  • Как выполнить выборочную проверку выполнения drawRect
  • Как написать тесты пользовательского интерфейса, касающиеся входа в Facebook в Xcode?
  • Проблема с DBL_EPSILON в iOS
  • Почему физические устройства сбой случайно меняют тесты XCTest UI?
  • UIAutomation и XCTestCase: как дождаться активации кнопки
  • Почему я должен использовать отдельную тестовую цель для запуска XCTests и как мне это сделать?
  • Можно ли запускать тесты XCTest в приложении iOS?
  • Невозможно запустить xctests с помощью @import
  • Давайте будем гением компьютера.