2013-12-11 99 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,然後問任何你想要的。 –