Модульный тест asynchron swift вызывается 3 раза вместо 1
Я написал модульный тест для асинхронной функции, которая загружает данные через HTTP-запрос.
Когда я запускаю тест, его вызывают 3 раза, а не 1 раз.
Я пытался реализовать модульные тесты, как здесь: https://adoptioncurve.net/archives/2015/10/testing-asynchronous-code-in-swift/
Мой код выглядит так:
func getWatches(completionHandler: @escaping ((result:Bool)) -> ()) {
Some code ...
URLSession.shared.dataTask(with: request, completionHandler: { (data, response, error) -> Void in
Some code ...
DispatchQueue.main.async(){
completionHandler(true)
}
}).resume()
}
func testGetWatches() {
let asyncExpectation = expectation(description: "longRunningFunction")
WatchApiConnector.sharedInstance.getWatches() { (result) -> () in
asyncExpectation.fulfill()
}
self.waitForExpectations(timeout: 5) { error in
XCTAssertEqual(WatchApiConnector.sharedInstance.watches.count,20,"20 expected")
}
}
В результате я получаю следующее:
Test Suite 'WatchApiConnectorTests' passed at 2016-12-15 14:32:30.437.
Executed 1 test, with 0 failures (0 unexpected) in 0.305 (0.306) seconds
Test Suite 'ChronextTests.xctest' passed at 2016-12-15 14:32:30.438.
Executed 1 test, with 0 failures (0 unexpected) in 0.305 (0.307) seconds
Test Suite 'Selected tests' passed at 2016-12-15 14:32:30.439.
Executed 1 test, with 0 failures (0 unexpected) in 0.305 (0.309) seconds
Так что я делаю что-то не так или это стандартное поведение асинхронных модульных тестов на iOS?