Как протестировать асинхронные функции в swift, используя XCTWaiter и исключения - PullRequest
0 голосов
/ 24 апреля 2018

Я хочу протестировать асинхронные функции в Swift, поэтому, как показано ниже, я создал XCTestExpectation и передал его XCTWaiter. Теперь, независимо от того, выполнено ли ожидание или нет, я получаю тест, успешно выполненный всегда .

Можете ли вы указать, что не так в коде. Я в точности следил за блогом, созданным для Swift 3, однако я использую Swift 4. Это проблема?

func testAsyncFunction() {
        let expectation = XCTestExpectation(description: "Some description")
        vc.asyncFunction(5) { (abc: Int) -> Int in
            if (abc != 25) {
                // expectation.fulfill()
            }
            return 0
        }
        _ = XCTWaiter.wait(for: [expectation], timeout: 2.0)
    }

1 Ответ

0 голосов
/ 25 апреля 2018

XCTWaiter.wait возвращает XCTWaiter.Result, который вы должны наблюдать.

func testAsyncFunction() {
    let expectation = XCTestExpectation(description: "Some description")
    vc.asyncFunction(5) { (abc: Int) -> Int in
        if (abc != 25) {
            // expectation.fulfill()
        }
        return 0
    }

    let result = XCTWaiter.wait(for: [expectation], timeout: 2.0) // wait and store the result
    XCTAssertEqual(result, .timedOut) // check the result is what you expected
}
...