Я взглянул на проект воспроизведения, чтобы увидеть, чего вы пытались достичь здесь ...
Насколько я понимаю:
XCTAssertThrowsError - это утверждения, которые принимают блок, который можно бросить. Они просто утверждают, что в синхронный блок выдается ошибка, когда он завершается.
XCTestExpectation - это классы, которые отслеживают, выполняются ли запрошенные условия. Они предназначены для отслеживания асинхронного поведения кода. Необходимо сохранить объекты и ссылки и проверить их позже.
То, что вы пытаетесь сделать, это заставить что-то вроде XCTestExpectation работать XCTAssertThrowsError выполняет те же действия, что и при синхронном утверждении о том, что асинхронный блок будет генерировать. Это не будет работать таким образом из-за того, как код выполняется и возвращается.
Асинхронный код, на который вы ссылаетесь, не генерирует (инициализатор таймера). Насколько я знаю, нет никаких асинхронных блоков, которые могут бросить. Возможно, вопрос, который вы должны задать, заключается в том, как мы можем сделать так, чтобы синхронная операция иногда выполнялась синхронно, но также и асинхронно, когда это ощущается как ...
В качестве альтернативы для дополнительной сложности в каждом классе, который вы хотите проверитьЯ нашел решение с минимальным минимумом, чтобы сделать его легко тестируемым и портативным ...
https://github.com/Jasperav/ThrowingAsyncError/pull/1/files
Могу я спросить, почему вы захотите это сделать? как то так?