2013-12-11 96 views
4

如何使用OCMockito捕捉具有原始值的参数?OCMockito捕获原始类型?

MKTArgumentCaptor似乎只能捕获对象类型? Xcode说“与整数转换指针不兼容”。

回答

6

对于原始参数,你必须做一个小小的舞蹈。比方说,我们嘲笑的NSMutableArray,想验证调用

- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject; 

而不是

[verify(mockArray) replaceObjectAtIndex:[argument capture] withObject:anything()]; 

,让你的类型的冲突,我们只是有一个虚拟值(0会做得很好),但添加OCMockito致电给定的参数索引覆盖匹配:

[[verify(mockArray) withMatcher:[argument capture] forArgument:0] 
    replaceObjectAtIndex:0 withObject:anything()]; 

-withMatcher:forArgument:参数索引是基于0的第一个参数,所以这个说,“对于第一个参数,不管传入的是什么,而是使用这个匹配器。“

还有一种方法-withMatcher:刚刚执行此第一个参数,所以本实施例中可以简化为

[[verify(mockArray) withMatcher:[argument capture]] 
    replaceObjectAtIndex:0 withObject:anything()]; 
+0

[参数值]然后返回一个NSNumber的。 – huggie

+0

这是正确的。然后你拿那个NSNumber,然后问任何你想要的。 –