2016-07-14 2 views
0

Я использую XCTest для модульного тестирования моего кода Objective C. Я должен проверить метод A(), который в свою очередь вызывает B(). Есть ли способ, которым я могу переопределить B(), чтобы сосредоточиться на тестировании A()?Как переопределить и проверить зависимый метод в Objective C или Swift

Приведенный ниже пример.

- (void) A{ 
    int x = [self B]; 
    if(x == something) 
    { 
     // DoSomething 
    } 
    else 
    { 
     // DoSomething else 
    } 
} 

Мое намерение состоит в том, чтобы проверить A() на несколько ответов/возвращаемых значений B().

ответ

0

Вы можете создать высмеивал версию объекта:

class MyClass { 
    func a() -> String { 
     return b("Hello") 
    } 

    func b(input: String) -> String { 
     return string.capitalizedString 
    } 
} 

class MockMyClass: MyClass { 
    var mockedBValue: String = "" 

    override func b(input: String) -> String { 
     return mockedBValue 
    } 
} 

// in your test: 
let object = MockMyClass() 
object.mockedBValue = "fdf" 

let str = object.a() 
//str now eqauls to "fdf" 

Не уверен, что именно ваша реализация, но это должно дать вам подсказку.

Вы также можете посмотреть на http://ocmock.org/

0

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