如何捕捉发送给模拟的参数?

有谁知道如何捕获发送到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]