如何捕捉发送给模拟的参数?
有谁知道如何捕获发送到OCMock对象的参数?
id mock = [OCMockObject mockForClass:someClass] NSObject* captureThisArgument; [[mock expect] foo:<captureThisArgument>] [mock foo:someThing] GHAssertEquals[captured, someThing, nil];
我如何去validationfoo的论点? 我很乐意在模拟定义中的一个块中做到这一点,但是如果我能把对象拿出来,以便我可以在后面说明它的特性,这将是辉煌的。
这可能与OCMock?
如果你想validation你的参数,也许你可以直接做,而你正在设置你的存根类似的东西:
id mock = [OCMockObject mockForClass:someClass]; NSObject* captureThisArgument; [[mock expect] foo:[OCMArg checkWithBlock:^(id value){ // Capture argument here... }]];
问候,昆汀A
您可以对该呼叫进行存根并将其传递给validation它的块:
NSObject *expected = ...; id mock = [OCMockObject mockForClass:someClass] void (^theBlock)(NSInvocation *) = ^(NSInvocation *invocation) { NSObject *actual; [invocation getArgument:&actual atIndex:2]; expect(actual).toEqual(expected); }; [[[mock stub] andDo:theBlock] foo:[OCMArg any]]; [mock foo:expected];
还有一个callback版本,但控制stream变得更加复杂,因为你需要一个状态variables,这个variables对你的testing和validationcallback都是可见的:
[[[mock stub] andCall:@selector(aMethod:) onObject:anObject] someMethod:someArgument]