解决方法
类模拟创建的对象是类实例的纯模型.
部分模拟采用类的实例,允许您存根其任何方法.
假设我有这些类:
@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 举报,一经查实,本站将立刻删除。