Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将结构参数与OCMock匹配?_Ios_Objective C_Struct_Ocmock - Fatal编程技术网

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非常有效。谢谢