我正在学习OCMock for iOS测试."类模拟"和"部分模拟"之间有什么区别,什么时候应该使用一个与另一个?
Ben*_*ynn 13
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
Run Code Online (Sandbox Code Playgroud)
我对测试Bar的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];
}
Run Code Online (Sandbox Code Playgroud)
你在这里看到我的部分模拟允许我调用我想要测试的真实方法,同时模拟对其另一个实例方法的内部调用.因为我不需要Foo的任何实际功能,所以我使用了类mock.
| 归档时间: |
|
| 查看次数: |
3781 次 |
| 最近记录: |