有没有办法更改 OCMock 中的一个参数并继续 运行 存根函数
Is there a way to change one of parameters in OCMock and continue running the stubbed function
您好,我正在尝试更改已存根的函数的参数。
我在日志中看到我的存根被成功调用,我想更改其中一个参数和 运行 原始函数。我可以用 OCMock 做到这一点吗?
这是我正在做的事情:
....
id testMgrMock = [OCMockObject partialMockForObject:testClassInstance];
OCMStub([testMgrMock addRequestWithMethod:OCMOCK_ANY
path:OCMOCK_ANY
parameters:OCMOCK_ANY
headers:OCMOCK_ANY
body:OCMOCK_ANY
delegate:OCMOCK_ANY
successBlock:OCMOCK_ANY
failureBlock:OCMOCK_ANY]).
andDo(^(NSInvocation* invocation){
NSString* path = @"http://addressnotexi.st";
[invocation setArgument:&path atIndex:2];
// here I want to call "addRequestWithMethod:path:parameters:header (etc)"
// on a real object with the parameter "path" changed to my string
[invocation invoke];
});
......
[invocation invoke];
行让我 bad_exec 崩溃。即使我不更改参数。
如何正确操作?有可能吗?
谢谢
我发现了问题
需要按以下方式重新排列代码:
在@implementation
之前:
NSString invalidPath = @"http://theaddressthatdoesnotexis.ts";
代码将如下所示:
....
id testMgrMock = [OCMockObject partialMockForObject:testClassInstance];
OCMStub([testMgrMock addRequestWithMethod:OCMOCK_ANY
path:[OCMArg isNotEqual:invalidPath]
parameters:OCMOCK_ANY
headers:OCMOCK_ANY
body:OCMOCK_ANY
delegate:OCMOCK_ANY
successBlock:OCMOCK_ANY
failureBlock:OCMOCK_ANY]).
andDo(^(NSInvocation* invocation){
[invocation setArgument:&invalidPath atIndex:3];
[invocation invoke];
});
......
简而言之。我的调用正在运行,但如果正在调用自身
您好,我正在尝试更改已存根的函数的参数。 我在日志中看到我的存根被成功调用,我想更改其中一个参数和 运行 原始函数。我可以用 OCMock 做到这一点吗?
这是我正在做的事情:
....
id testMgrMock = [OCMockObject partialMockForObject:testClassInstance];
OCMStub([testMgrMock addRequestWithMethod:OCMOCK_ANY
path:OCMOCK_ANY
parameters:OCMOCK_ANY
headers:OCMOCK_ANY
body:OCMOCK_ANY
delegate:OCMOCK_ANY
successBlock:OCMOCK_ANY
failureBlock:OCMOCK_ANY]).
andDo(^(NSInvocation* invocation){
NSString* path = @"http://addressnotexi.st";
[invocation setArgument:&path atIndex:2];
// here I want to call "addRequestWithMethod:path:parameters:header (etc)"
// on a real object with the parameter "path" changed to my string
[invocation invoke];
});
......
[invocation invoke];
行让我 bad_exec 崩溃。即使我不更改参数。
如何正确操作?有可能吗?
谢谢
我发现了问题
需要按以下方式重新排列代码:
在@implementation
之前:
NSString invalidPath = @"http://theaddressthatdoesnotexis.ts";
代码将如下所示:
....
id testMgrMock = [OCMockObject partialMockForObject:testClassInstance];
OCMStub([testMgrMock addRequestWithMethod:OCMOCK_ANY
path:[OCMArg isNotEqual:invalidPath]
parameters:OCMOCK_ANY
headers:OCMOCK_ANY
body:OCMOCK_ANY
delegate:OCMOCK_ANY
successBlock:OCMOCK_ANY
failureBlock:OCMOCK_ANY]).
andDo(^(NSInvocation* invocation){
[invocation setArgument:&invalidPath atIndex:3];
[invocation invoke];
});
......
简而言之。我的调用正在运行,但如果正在调用自身