iOS テスト用の OCMock を学習しています。「クラスモック」と「部分モック」の違いは何ですか? また、どちらを使用する必要があるのですか?
質問する
4345 次
1 に答える
14
Class mocks
クラス インスタンスの純粋なモックであるオブジェクトを作成します。
Partial mocks
クラスのインスタンスを取得して、そのメソッドのいずれかをスタブ化できます。
これらのクラスがあるとします:
@interface Foo : NSObject
- (void)doX;
@end
@implementation
- (void)doX
{
NSLog(@"X");
}
@end
@interface Bar : NSObject
- (void)doA:(Foo *)foo;
- (void)doB;
@end
@implementation Bar
- (void)doA:(Foo *)foo
{
NSLog(@"A");
[foo doX];
[self doB];
}
- (void)doB
{
NSLog(@"B");
}
@end
doA:
バーの方法をテストすることに興味があります。doX
オブジェクトを呼び出してFoo
から、独自のdoB
メソッドを呼び出すことを期待しています。これは、Foo のクラス モックと Bar の部分モックを使用して実装します。
- (void)test_doA_shouldCall_doX_and_doB
{
id objectUnderTest = [OCMockObject partialMockForObject:[Bar new]];
id fooMock = [OCMockObject mockForClass:Foo.class];
[[fooMock expect] doX];
[[objectUnderTest expect] doB];
// Make the call
[objectUnderTest doA:fooMock];
[objectUnderTest verify];
[fooMock verify];
}
ここで、部分モックにより、別のインスタンス メソッドへの内部呼び出しをモックしながら、テストしたい実際のメソッドを呼び出すことができたことがわかります。ただし、Foo の実際の機能はまったく必要なかったので、クラス モックを使用しました。
于 2013-08-18T02:05:43.437 に答える