我使用OCMock我試圖做這樣的事情在我的測試之一:OCMock傳遞任何CGSize
[[mockScrollView expect] setContentSize:[OCMArg any]];
的問題是,[OCMArg any]
返回id
類型,我想使用任何CGSize
,因爲我不知道它是確切的價值。我怎麼能通過這個論點?
我使用OCMock我試圖做這樣的事情在我的測試之一:OCMock傳遞任何CGSize
[[mockScrollView expect] setContentSize:[OCMArg any]];
的問題是,[OCMArg any]
返回id
類型,我想使用任何CGSize
,因爲我不知道它是確切的價值。我怎麼能通過這個論點?
隨着OCMock的2.2版本,你可以使用ignoringNonObjectArgs
[[mockScrollView expect] ignoringNonObjectArgs] setContentSize:dummySize];
恕我直言,這應該是正確的答案。 –
AFAIK無法通過OCMock完成此操作。
另一種方法是創建一個手工製作的模擬。這是UIScrollView
的一個子類,您可以覆蓋setContentSize:
將給定的大小分配給後來可以檢查的伊娃。
其他更簡單的選項是使用真正的UIScrollView
並直接檢查是contentSize
是你期望的。我會去解決這個問題。
我同意檢查內容大小變化的結果是去這裏的好方法。 –
不幸的是,它看起來像你必須擴展OCMock才能實現這一點。你可以按照這個模式...
OCMArg.h
// Add this:
+ (CGSize)anyCGSize;
OCMArg.c
// Add this:
+ (CGSize)anyCGSize
{
return CGSizeMake(0.1245, 5.6789);
}
// Edit this method:
+ (id)resolveSpecialValues:(NSValue *)value
{
const char *type = [value objCType];
// Add this:
if(type[0] == '{')
{
NSString *typeString = [[[NSString alloc] initWithCString:type encoding:NSUTF8StringEncoding] autorelease];
if ([typeString rangeOfString:@"CGSize"].location != NSNotFound)
{
CGSize size = [value CGSizeValue];
if (CGSizeEqualToSize(size, CGSizeMake(0.1245, 5.6789)))
{
return [OCMArg any];
}
}
}
// Existing code stays the same...
if(type[0] == '^')
{
void *pointer = [value pointerValue];
if(pointer == (void *)0x)
return [OCMArg any];
if((pointer != NULL) && (object_getClass((id)pointer) == [OCMPassByRefSetter class]))
return (id)pointer;
}
return value;
}
這是OCMock的問題。也就是說,嘲笑一種觀點通常不是必要的。你想達到什麼目的? –