我有一个方法:
@implementation SomeClass
- (void)thisMethod:(ObjectA *)objA {
[APIClient connectToAPIWithCompletionHandler:^(id result){
if (result) [objA methodOne];
else [objA methodTwo];
}];
}
在调用methodOne
时,有没有办法验证methodTwo
或thisMethod:
?基本上我只想存根connectToAPIWithCompletionHandler:
方法。现在我可以通过调动connectToAPIWithCompletionHandler:
方法来做到这一点。但我想知道是否有更好的方法。
我发现了类似的问题here,但它使用的是实例方法,而在我的例子中是类方法。
答案 0 :(得分:2)
试试这个:
- (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];
}
请注意,我直接在浏览器中输入了这个内容,但希望它接近工作。