我想动态地将依赖于参数的值返回到模拟方法,在概念上如下:
[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]];
这可能与新西兰人有关吗?
答案 0 :(得分:5)
可以使用stub:withBlock:
:
[realObject stub:@selector(myMethod:) withBlock:^id(NSArray *params) {
return [params objectAtIndex:0];
];
答案 1 :(得分:-1)
捕获参数的推荐方法是使用捕获间谍,例如:
id testDouble = [SomeClass mock];
object.property = testDouble;
KWCaptureSpy *spy = [testDouble captureArgument:@selector(methodWithParam:) atIndex:0];
[object doSomethingWithProperty];
[[spy.argument should] equal:someResult];
也可以使用stub:withBlock:
来实现,但是当涉及到检查方法参数的任务时,捕获间谍倾向于使您的意图更清晰。这使得更具可读性的规格。