如何测试是否调用特定方法

时间:2016-02-18 16:25:23

标签: ios xctest

你好,

我正在为我的应用程序编写单元测试,我想知道是否可以测试是否调用了特定方法。

例如,让我们说我想测试一下,当调用以下dismiss方法时,也会调用reallyDismiss方法:

- (void)dismiss
{
   [self reallyDismiss];
}

是否有类似的东西:

- (void)testReallyDismissIsCalledWhenDismissIsCalled
{
    [self.viewController dismiss];
    XCTAssertMethodHasBeenCalled(@"reallyDismiss");
}

2 个答案:

答案 0 :(得分:1)

不直接,不。您通常会使用模拟库来注入您自己的该方法版本,以便您可以添加对其调用的期望或对目标类进行子类化,以便子类可以拦截(并在需要时转发)方法调用您& #39;重新检查。

答案 1 :(得分:0)

您可以将代码重构为

-(BOOL)dismiss {
   if someCondition {
        [self reallyDismiss];
        return YES;
   } else {
        return NO;
   }
}

- (void)testReallyDismissIsCalledWhenDismissIsCalled
{
    XCTAssertTrue([self.viewController dismiss], @"reallyDismiss");
}