XCTestCase waitForExpectationsWithTimeout:handler: выбрасывает EXC_BAD_ACCESS, когда ожидание не выполнено

Я тестирую асинхронный вызов с использованием XCTestExpectation.

Следующий код работает (тест завершается успешно), когда завершение выполнения выполняется до истечения заданного времени ожидания в 1 секунду.

func test__async_call() {
        // prepare
        let sut = ClassToTest()
        let expectation: XCTestExpectation = self.expectationWithDescription(nil)

        // test
        sut.methodToTestWithCompletionHandler() { () -> () in
            expectation.fulfill()
        }

        // verify
        self.waitForExpectationsWithTimeout(1, handler: nil)
    }

Тем не менее, если completeHandler не вызывается и, следовательно, ожидание не выполняется, вместо получения ошибки теста при вызове waitForExpectationsWithTimeout я получаю EXC_BAD_ACCESS, что не очень удобно, так как это делает невозможным просмотр результатов всего набора тестов.

Как я могу избежать этого и получить нормальный провал теста?

1 ответ

Кажется, что то, что вызывает EXC_BAD_ACCESS, передает нулевое описание при создании ожидания.

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

let expectation: XCTestExpectation = self.expectationWithDescription("...")
Другие вопросы по тегам