4

NSURLConnection への呼び出しをモックしようとしています。クラス メソッドの呼び出しを、モック オブジェクトを呼び出す独自のメソッドと入れ替えます。私はこのようなモックを実装しようとしています:

[[[[urlConnectionMock expect] andDo:^(NSInvocation *invocation) {
    NSURLResponse * __autoreleasing *responsePointer;
    [invocation getArgument:&responsePointer atIndex:3];
    id response = [OCMockObject niceMockForClass:NSHTTPURLResponse.class];
    [[[response stub] andReturnValue:OCMOCK_VALUE((NSInteger){ 200 })] statusCode];
    *responsePointer = response;
}] andReturn:encryptedResponse] sendSynchronousRequest:OCMOCK_ANY returningResponse:OCMOCK_ANY error:OCMOCK_ANY];

問題は、OCMOCK_ANY が、ポインターへのポインターではなく、Objective-C ポインターであることです (コンパイラーは正しく文句を言います)。OCMock のソースをさらに深く掘り下げる前に、誰かがこれを回避する方法を提案できますか? あなたがより良いアプローチを完全に持っている場合は、完全なクレジットが与えられます。

4

1 に答える 1

2

理解した。参照による参照は、OCMock に既に組み込まれています。

id fakeResponse = [OCMockObject niceMockForClass:NSHTTPURLResponse.class];
[[[fakeResponse stub] andReturnValue:OCMOCK_VALUE((NSInteger){ 200 })] statusCode];
[[[urlConnectionMock expect] andReturn:encryptedResponse] sendSynchronousRequest:OCMOCK_ANY returningResponse:[OCMArg setTo:fakeResponse] error:[OCMArg setTo:nil]];

これは見た目もとても幸せです!

于 2013-03-29T17:26:43.643 に答える