我想动态地将一个依赖于参数的值返回给模拟的方法,在概念上如下所示:
[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]];
这和猕猴桃有可能吗?
发布于 2013-11-26 02:05:18
使用stub:withBlock:
是可能的
[realObject stub:@selector(myMethod:) withBlock:^id(NSArray *params) {
return [params objectAtIndex:0];
];
发布于 2013-11-26 03:43:18
捕获参数的推荐方法是使用捕获间谍,例如:
id testDouble = [SomeClass mock];
object.property = testDouble;
KWCaptureSpy *spy = [testDouble captureArgument:@selector(methodWithParam:) atIndex:0];
[object doSomethingWithProperty];
[[spy.argument should] equal:someResult];
它也可以使用stub:withBlock:
实现,但是捕获间谍在检查方法参数的任务时往往会使您的意图更加清晰。这使得规范更具可读性。
https://stackoverflow.com/questions/20195863
复制相似问题