2015-12-04 3 views
0

Как я могу утверждать, что функция не throw ошибка в Swift? В Objective C есть макрос XCUnit для этого случая, но я не могу найти его в Swift.Проверьте, что функция не выдает ошибку

+2

Связанный: https://forums.developer.apple.com/thread/5824 – JAL

+2

Проверьте эту быструю библиотеку тестирования: https: // GitHub .com/Quick/Nimble You может делать что-то вроде 'expect {try somethingThatThrows()} .to (throwError())' – prolfe

ответ

3

Для этого нет конкретной функции XCTest, но ее тестирование довольно просто. Просто напишите свою собственную установку do/try/catch что XCTFail s, когда выдается ошибка, так как на форумах разработчиков ссылаются на @ комментарий JAL в:

// generalized to a function 
func AssertNoError(message: String = "", file: String = #file, line: UInt = #line, _ block:() throws ->()) { 
    do { 
     try block() 
    } catch { 
     let msg = (message == "") ? "Tested block threw unexpected error." : message 
     XCTFail(msg, file: file, line: line) 
    } 
} 

// in use 
AssertNoError(someVoidToVoidFunc) 
AssertNoError("reason", { someFuncThatTakes(parameters) }) 
+0

Как примечание, в Swift 3 '_FILE_' был изменен на' # file', а '_LINE_' был изменен на' #line ' –

+2

Yup. Кажется, все дети в хэштаги в эти дни. – rickster

2

Along ответ стороне @ rickster, в если вы используете Nimble Искателя , который я очень рекомендую, вы можете написать ожидания, как:

expect{ try somethingThatThrows() }.to(throwError()) 

expect{ try somethingThatShouldNotThrow() }.toNot(throwError()) 
Смежные вопросы