OCMock - 模拟嵌套块

时间:2015-12-28 19:55:03

标签: xcode macos unit-testing xctest ocmock

我正在使用OCMock测试以下方法:

- (void)methodToTest {
    [self.someObject doFirstActionWithParam:@"aparam" completion:(void(^)(BOOL success)) {
        if (success) {
            [self.someObject doSecondActionWithParam:@"aparam" completion:(void(^)(BOOL success)) {
                if (success) { [self doSomething]; }
             }];
        }
    }];
}

我对self.someObject进行了部分模拟。

doFirstActionWithParam,我可以设置一个期望。我也覆盖了完成块(通过NSInvocation并调用YES完成)。

但是,我无法接受doSecondActionWithParam方法的调用。我还设置了doSomething方法的期望。这种情况永远不会发生。

有关测试嵌套完成块的方法的任何建议吗?

1 个答案:

答案 0 :(得分:0)

模拟方法(存根或期望)时,由于嵌套级别应该没有区别。由于您没有包含测试代码,因此很难诊断问题。我的假设是永远不会调用传递给doFirstActionWithParam:completion:的块,在这种情况下,doSecondActionWithParam:completion:永远不会被调用。