4

我正在使用 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'。应该等于”

我认为这两个语句应该做完全相同的事情。我错了吗?

4

1 回答 1

7

setReturnValue:需要一个指向返回值的指针,所以你的块应该是:

void (^theBlock)(NSInvocation *) = ^(NSInvocation *invocation) {
    NSString *capitalizedString = @"255";
    [invocation setReturnValue:&capitalizedString];
};
于 2011-03-27T16:42:17.297 回答