如何使用OCMock测试是否在完成处理程序块内调用了对象的方法?

我有一个方法:

@implementation SomeClass - (void)thisMethod:(ObjectA *)objA { [APIClient connectToAPIWithCompletionHandler:^(id result){ if (result) [objA methodOne]; else [objA methodTwo]; }]; } 

有没有办法validation在调用thisMethod:时将调用thisMethod:methodTwo ? 基本上我只想存根connectToAPIWithCompletionHandler:方法。 现在我可以通过调整connectToAPIWithCompletionHandler:方法来实现这一点。 但我想知道是否有更好的方法。

我在这里找到了类似的问题,但它使用的是实例方法,而在我的例子中是类方法。

尝试这个:

 - (void)test_thisMethod { id mockA = [OCMockObject mockForClass:[ObjectA class]]; id mockClient = [OCMockObject mockForClass:[APIClient class]]; // Use class method mocking on APIClient [[mockClient expect] andDo:(NSInvocation *invocation) { void (^completion)(id result) = [invocation getArgumentAtIndexAsObject:2]; completion(nil); }] connectToAPIWithCompletionHandler:OCMOCK_ANY]; [[mockA expect] methodTwo]; [[SomeClass new] thisMethod:mockA]; [mockA verify]; [mockClient verify]; } 

请注意,我直接在浏览器中键入了这个,但希望它接近工作。