Время ожидания задачи асинхронного запроса данных URL истекло

#swift #swift3 #nsurlsession #xctest #xctestexpectation

#swift #swift3 #nsurlsession #xctest #xctestexpectation

Вопрос:

Пытаюсь запустить следующий тест. Она никогда не попадает в блок завершения, а вместо этого время ожидания истекает через 30 секунд. Похоже, что запрос никогда не выполняется, поскольку я не вижу его на Charles.

 func testAsynchronousURLConnection() {
    let url = URL(string: "https://jsonplaceholder.typicode.com/posts/1")!
    let exp = expectation(description: "Async request")

    var urlRequest = URLRequest(url: url)

    urlRequest.httpMethod = "GET"
    urlRequest.addValue("application/json", forHTTPHeaderField: "Accept")

    let task = URLSession.shared.dataTask(with: urlRequest) { data, response, error in
        XCTAssertNotNil(data, "data should not be nil")
        XCTAssertNil(error, "error should be nil")
        exp.fulfill()
    }

   task.resume()

    waitForExpectations(timeout: 30) { error in
        if let error = error {
            print("Error: (error)")
        }
    }
}
  

Тест завершается с ошибкой:

Сбой асинхронного ожидания: превышен тайм-аут в 30 секунд с невыполненными ожиданиями: «Асинхронный запрос»

Где я ошибаюсь?

Комментарии:

1. Если вы исключите Чарльза из уравнения, увидите ли вы такое же поведение? Интересно, есть ли что-то странное в настройках прокси-сервера SSL (например, ожидание какого-либо подтверждения сертификата или что-то странное в этом роде). Сказав это, я бы все равно ожидал, что она завершится успешно или завершится неудачей немедленно. Я использую Charles для просмотра этого, и это работает нормально…

2. Да, я только что закрыл Charles и создал новый проект. Скопируйте и вставьте тест, он работает там, но не в моем существующем проекте. Абсолютно не понимаю, что может содержать мой существующий проект, который его блокирует.