Ios 如何将结构参数与OCMock匹配?
因此,我有一个方法,在一个名为Ios 如何将结构参数与OCMock匹配?,ios,objective-c,struct,ocmock,Ios,Objective C,Struct,Ocmock,因此,我有一个方法,在一个名为PopoverProvider - (void)showPopoverForAction:(MESAction *)action fromRect:(CGRect)rect inView:(UIView *)view onDoneBlock:(MESActionPopoverDoneBlock)block; 我想确认它是否被这样调用: // popoverProvider is a PopoverProvider
PopoverProvider
- (void)showPopoverForAction:(MESAction *)action fromRect:(CGRect)rect inView:(UIView *)view onDoneBlock:(MESActionPopoverDoneBlock)block;
我想确认它是否被这样调用:
// popoverProvider is a PopoverProvider
[[[popoverProvider expect] andReturn:mockRecipeIngredientViewController]
showPopoverForAction:[OCMArg any]
fromRect:[OCMArg any] // !!!!
inView:[OCMArg any]
onDoneBlock:[OCMArg any]
];
标记的行导致了一个问题:
[OCMArg any]
在CGRect
s上不匹配,这是一种结构类型。在这种情况下,由于您不关心rect的值,我将使用:
[[[[popoverProvider expect] andReturn:mockRecipeIngredientViewController] ignoringNonObjectArgs]
showPopoverForAction:[OCMArg any]
fromRect:CGRectMake(0.0f,0.0f,0.0f,0.0f)
inView:[OCMArg any]
onDoneBlock:[OCMArg any]
];
如果您想忽略一个结构,但检查另一个结构,您可以这样做:
[[[[[popoverProvider expect] andReturn:mockRecipeIngredientViewController] ignoringNonObjectArgs] andDo:^(NSInvocation *invocation) {
CGRect theSize;
[invocation getArgument:&theSize atIndex:6];
STAssertEquals(theSize, CGSizeMake(20.0f,20.0f), @"No match!");
}]
showPopoverForAction:[OCMArg any]
fromRect:CGRectMake(0.0f,0.0f,0.0f,0.0f)
inView:[OCMArg any]
onDoneBlock:[OCMArg any]
someSize:CGSizeMake(0.0f,0.0f)
];
非常正确-使用CGRectZero非常有效。谢谢