2016-07-14 1 views
0

Ich verwende XCTest für Unit-Tests meiner Objective-C-Code. Ich muss Methode A() testen, die wiederum B() aufruft. Gibt es eine Möglichkeit, B() zu überschreiben, damit ich mich auf das Testen von A() konzentrieren kann?Wie überschreiben und testen Sie eine abhängige Methode in Objective C oder Swift

Ein Beispiel unten angegeben.

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

Meine Absicht ist es, A() für mehrere Antworten/Rückgabewerte von B() zu testen.

Antwort

0

Sie können eine verspottet Version des Objekts erstellen:

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" 

nicht sicher, was genau Ihre Implementierung ist, aber das sollte man einen Hinweis geben.

Sie können auch bei http://ocmock.org/

0

Dependency Injection einen Blick ist eine Technik, die Sie Implementierung während Unit-Tests ändern. Google diesen Begriff und lernen Sie, Ihren Code testbarer zu machen.

Verwandte Themen