单元测试 OCMock的基本使用

对一些不容易获取到的对象,模拟出对象和返回值,
在这里插入图片描述
比较返回值是不是和预期的返回值一样,如果后期不小心改动了callSomthing方法,就能检测出来
OCMock官方

类模拟

创建一个模拟对象

id classMock = OCMClassMock([SomeClass class]);

stubbing方法

告诉mock对象,当someMethod被调用,返回什么值

OCMStub([mock someMethod]).andReturn(anObject);
OCMStub([mock aMethodReturningABoolean]).andReturn(YES);

运行后验证

如果方法没有被调用,返回失败

id mock = OCMClassMock([SomeClass class]);
OCMStub([mock someMethod]).andReturn(myValue);

/* run code under test */
OCMVerify([mock someMethod]);
OCMVerify(never(),    [mock doStuff]); //从没被调用    
OCMVerify(times(n),   [mock doStuff]);   //调用了N次  
OCMVerify(atLeast(n), [mock doStuff]);  //最少被调用了N次
OCMVerify(atMost(n),  [mock doStuff]);  

参数约束

对参数进行约束

OCMStub([mock someMethodWithAnArgument:[OCMArg any]])
OCMStub([mock someMethodWithPointerArgument:[OCMArg anyPointer]])
OCMStub([mock someMethodWithSelectorArgument:[OCMArg anySelector]])

匹配限制: 用于限制参数

OCMStub([mock someMethod:aValue)
	OCMStub([mock someMethod:[OCMArg isNil]])
	OCMStub([mock someMethod:[OCMArg isNotNil]])
	OCMStub([mock someMethod:[OCMArg isNotEqual:aValue]])
	OCMStub([mock someMethod:[OCMArg isKindOfClass:[SomeClass class]]])
	OCMStub([mock someMethod:[OCMArg checkWithSelector:aSelector onObject:anObject]])
	OCMStub([mock someMethod:[OCMArg checkWithBlock:^BOOL(id value) { /* return YES if value is ok */ }]])

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值