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 回答