使用OCMock的块期望值

时间:2011-03-26 14:39:14

标签: objective-c unit-testing objective-c-blocks ocmock nsinvocation

我正在使用GHUnit& OCMock在我的iOS应用程序中进行一些测试工作。

所以我在整合它们时遇到了一些麻烦。

以下代码效果很好。

NSString *s = [NSString stringWithString:@"122"];
id mock = [OCMockObject partialMockForObject:s];
[[[mock stub] andReturn:@"255"] capitalizedString];
NSString *returnValue = [mock capitalizedString];
GHAssertEqualObjects(returnValue, @"255", @"Should be equal");
[mock verify];

但是当我改变[[[mock stub] andReturn:@“255”] capitalizedString];进入

[[[mock stub] andDo:^(NSInvocation *invocation) {
    [invocation setReturnValue:@"255"];
}] capitalizedString];

我收到一条错误,上面写着“原因:'NSCFString'应该等于'255'。应该相等”

我认为这两个陈述应该完全相同。我错了吗?

1 个答案:

答案 0 :(得分:7)

setReturnValue:需要指向返回值的指针,因此您的块应为:

void (^theBlock)(NSInvocation *) = ^(NSInvocation *invocation) {
    NSString *capitalizedString = @"255";
    [invocation setReturnValue:&capitalizedString];
};