2015-12-28 71 views
0

我正在与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方法设定了期望值。这从来没有通过。

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

回答

0

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