オブジェクト全体をモックするのではなく、クラスの実際のオブジェクトを持ち、そのクラスのメソッドのみをモックすることは可能ですか?
オブジェクトが 1 つのメソッドを除いて実際のオブジェクトと 100% 同じように動作するようにします。
元:
MyObject *object = [[MyObject alloc] init];
[[[object stub] andReturn:@"some_string"] getMyString];
オブジェクト全体をモックするのではなく、クラスの実際のオブジェクトを持ち、そのクラスのメソッドのみをモックすることは可能ですか?
オブジェクトが 1 つのメソッドを除いて実際のオブジェクトと 100% 同じように動作するようにします。
元:
MyObject *object = [[MyObject alloc] init];
[[[object stub] andReturn:@"some_string"] getMyString];
はい、それが部分的なモックの目的です。
部分的なモック
id aMock = [OCMockObject partialMockForObject:anObject]
anObjectと同じように使用できるモックオブジェクトを作成します。スタブ化されていないメソッドが呼び出されると、anObjectに転送されます。スタブメソッドがモックではなくanObjectへの参照を使用して呼び出された場合でも、モックによって処理されます。
現在、NSStringなどの無料のブリッジクラスのインスタンスに対して部分的なモックを作成できないことに注意してください。
ドキュメントで確認できます: 10.3 特定の特別なクラスに対して部分的なモックを作成することはできません