1

概念的には次のように、パラメーターに依存する値をモックされたメソッドに動的に返したいと思います。

[realObject stub] myMethod:CAPTUREDARGUMENT) andReturn:myMethod:CAPTUREDARGUMENT];

または、OCMock のようにブロック内の呼び出しにアクセスします。

void (^theBlock)(NSInvocation *) = ^(NSInvocation *invocation) {
    /* code that reads and modifies the invocation object */
};
[[[mock stub] andDo:theBlock] someMethod:[OCMArg any]];

キウイでそれは可能ですか?

4

2 に答える 2

5

を使用して可能stub:withBlock:です:

[realObject stub:@selector(myMethod:) withBlock:^id(NSArray *params) {
    return [params objectAtIndex:0];
];
于 2013-11-26T10:05:18.867 に答える
0

引数をキャプチャする推奨される方法は、キャプチャ スパイを使用することです。

id testDouble = [SomeClass mock];
object.property = testDouble;

KWCaptureSpy *spy = [testDouble captureArgument:@selector(methodWithParam:) atIndex:0];

[object doSomethingWithProperty];

[[spy.argument should] equal:someResult];

を使用して達成することもできますがstub:withBlock:、メソッドの引数を検査するタスクに関しては、キャプチャスパイを使用すると意図が明確になる傾向があります。これにより、より読みやすい仕様になります。

于 2013-11-26T11:43:18.953 に答える