2016-07-14 3 views
0

Objective CコードのユニットテストにXCTestを使用しています。私はメソッドA()をテストしなければなりません。メソッドA()はB()を呼び出します。 A()のテストに集中できるようにB()をオーバーライドする方法はありますか?Objective CまたはSwiftで従属メソッドをオーバーライドしてテストする方法

以下の例です。

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

私の意図は、B()の複数の応答/戻り値についてA()をテストすることです。

答えて

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

依存性の注入を見てとることができ

あなたはユニットテスト中に実装を変更することを可能にする技術です。 Googleのこの言葉はあなたのコードをよりテスト可能にすることを学ぶ。

関連する問題