4

我有一个方法:

@implementation SomeClass

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

有没有办法验证methodOnemethodTwo在被调用时会thisMethod:被调用?基本上我只想存根该connectToAPIWithCompletionHandler:方法。现在我可以通过调配connectToAPIWithCompletionHandler:方法来做到这一点。但我想知道是否有更好的方法。

我在这里发现了类似的问题,但它使用的是实例方法,而在我的情况下是类方法。

4

1 回答 1

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];        
}

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

于 2013-07-17T18:24:38.787 回答