2015-10-15 3 views
1

Я использую Swift2.Swift XCTest и утверждает

Предположим, у меня есть функция:

func divide(x x:Int, y:Int) -> Double? { 
    assert(y != 0) 

    if (y == 0) { 
     return nil 
    } else { 
     return (Double(x)/Double(y)) 
    } 
} 

Для целей отладки, которые я хотел использовать Assert, так что я могу видеть, когда проходит у = 0 в этой функции.

Я хотел бы также иметь обходной путь в производстве (я не хочу, чтобы врезаться, просто уведомить пользователя), что он не может делить на 0. У меня есть тест:

let res = divide(5, 0) 
XCTAssert(res == nil) 

Но вместо от завершения теста я получаю EXC_BAD_ACCESS на утверждении в функции деления.

Могу ли я отключить подтверждение для тестирования?

ответ

2

Одним из вариантов были бы добавить параметр по умолчанию для функции, которая может быть использована для обхода утверждать, что:

func divide(x x:Int, y:Int, safe:Bool=true) -> Double? { 
    if safe { 
     assert(y != 0) 
    } 

    if (y == 0) { 
     return nil 
    } else { 
     return (Double(x)/Double(y)) 
    } 
} 

В приложении вы будете продолжать называть его с параметрами x и y

divide(5, 0) 

и вы получите утверждение.

В тесте вы могли бы назвать его с параметром safe как false, который будет обойти отстаивать и позволяют использовать XCTAssert на результат:

let res = divide(5, 0, false) 
XCTAssert(res == nil) 
Смежные вопросы