首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >iOS_单元测试三之OCMockDemo

iOS_单元测试三之OCMockDemo

作者头像
mikimo
发布2022-07-20 14:51:17
发布2022-07-20 14:51:17
3880
举报
文章被收录于专栏:iOS开发~iOS开发~

OCMock使用举例

文章目录

例如:

一、需要测试的代码:

代码语言:javascript
复制
@implementation MOOCMockDemo

+ (void)handleLoadFinished:(NSDictionary *)info {
    MOPerson *person = [MOPerson personWithInfo:info];
    if ([person isValid]) {
        [self handleLoadSuccessWithPerson:person];
        [self showError:NO];
    } else {
        [self handleLoadFailWithPerson:person];
        [self showError:YES];
    }
}

+ (void)handleLoadSuccessWithPerson:(MOPerson *)person {
    // do something
}

+ (void)handleLoadFailWithPerson:(MOPerson *)person {
    // do something
}

+ (void)showError:(BOOL)error {
    // do something
}

@end

二、测试步骤:

1、准备数据

代码语言:javascript
复制
NSDictionary *info = @{@"name": @"momo"};
id mock = OCMClassMock([MOOCMockDemo class]);

2、添加预期

代码语言:javascript
复制
OCMExpect([mock handleLoadSuccessWithPerson:[OCMArg any]]);
可以预期不执行:
代码语言:javascript
复制
// 预期不执行
OCMReject([mock handleLoadFailWithPerson:[OCMArg any]]);
可以验证参数:
代码语言:javascript
复制
// 预期 + 参数验证
OCMExpect([mock handleLoadSuccessWithPerson:[OCMArg checkWithBlock:^BOOL(id obj) {
    MOPerson *person = (MOPerson *)obj;
    return [person.name isEqualToString:@"momo"];
}]]);
可以预期执行顺序:
代码语言:javascript
复制
// 预期下列方法顺序执行
[mock setExpectationOrderMatters:YES];
OCMExpect([mock handleLoadSuccessWithPerson:[OCMArg any]]);
OCMExpect([mock showError:NO]);
可以忽略参数(预期方法执行时):
代码语言:javascript
复制
OCMExpect([mock showError:YES]).ignoringNonObjectArgs; // 忽视参数

3、执行

代码语言:javascript
复制
[MOOCMockDemo handleLoadFinished:info];

4、断言

代码语言:javascript
复制
OCMVerifyAll(mock);

可以延迟断言:

代码语言:javascript
复制
OCMVerifyAllWithDelay(mock, 1); // 支持延迟验证

5、停止Mocking

代码语言:javascript
复制
[mock stopMocking];

github demo 地址

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • OCMock使用举例
    • 文章目录
    • 一、需要测试的代码:
    • 二、测试步骤:
      • 1、准备数据
      • 2、添加预期
      • 3、执行
      • 4、断言
      • 5、停止Mocking
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档