Ответ 1
Вы должны использовать исключения только для исключительных случаев, а не для обработки ошибок и управления потоком
Сказав это, здесь, как вы используете XCTAssertThrowsSpecific
:
XCTAssertThrowsSpecific
ожидает, что конкретный класс исключения будет вторым параметром. NSCAssert
выбрасывает NSException
. Чтобы проверить это, используйте
XCTAssertThrowsSpecific([object methodThatShouldThrow], NSException, @"should throw an exception");
Теперь это не поможет, потому что, вероятно, каждое исключение является NSException
или его подклассом.
NSException
имеют свойство name
, которое определяет тип исключения. В случае NSCAssert
это NSInternalInconsistencyException
. Чтобы проверить это, используйте XCTAssertThrowsSpecificNamed
XCTAssertThrowsSpecificNamed([object methodThatShouldThrow], NSException, NSInternalInconsistencyException, @"should throw NSInternalInconsistencyException");