iOS OCMock部分vs类模拟

前端之家收集整理的这篇文章主要介绍了iOS OCMock部分vs类模拟前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在学习OCMock for iOS测试. “类模拟”和“部分模拟”之间有什么区别,什么时候应该使用一个与另一个?

http://ocmock.org/features/

解决方法

类模拟创建的对象是类实例的纯模型.

部分模拟采用类的实例,允许您存根其任何方法.

假设我有这些类:

@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

我有兴趣测试Bar的doA:方法.我希望它在Foo对象上调用doX,然后调用它自己的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的任何实际功能,所以我使用了类mock.

原文链接:https://www.f2er.com/iOS/332895.html

猜你在找的iOS相关文章