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' と等しいはずです。等しいはずです」というエラーが表示されました。

2 つのステートメントはまったく同じことを行うべきだと思います。私が間違っている?

4

1 に答える 1

7

setReturnValue:戻り値へのポインターが必要なので、ブロックは次のようになります。

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