微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/iOS/332895.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐