如何测试特定方法是否被调用
How to test if a specific method is called
你好,
我正在为我的应用程序编写单元测试,我想知道是否可以测试是否调用了特定方法。
例如,假设我想测试当下面的dismiss
方法被调用时,reallyDismiss
方法也被调用:
- (void)dismiss
{
[self reallyDismiss];
}
是否有类似的东西:
- (void)testReallyDismissIsCalledWhenDismissIsCalled
{
[self.viewController dismiss];
XCTAssertMethodHasBeenCalled(@"reallyDismiss");
}
?
您可以将代码重构为
-(BOOL)dismiss {
if someCondition {
[self reallyDismiss];
return YES;
} else {
return NO;
}
}
- (void)testReallyDismissIsCalledWhenDismissIsCalled
{
XCTAssertTrue([self.viewController dismiss], @"reallyDismiss");
}
不直接,不。您通常会使用模拟库来注入您自己的该方法版本,以便您可以添加它被调用的期望或 subclass 目标 class 以便 subclass 可以拦截(并在需要时转发)您正在检查的方法调用。
你好,
我正在为我的应用程序编写单元测试,我想知道是否可以测试是否调用了特定方法。
例如,假设我想测试当下面的dismiss
方法被调用时,reallyDismiss
方法也被调用:
- (void)dismiss
{
[self reallyDismiss];
}
是否有类似的东西:
- (void)testReallyDismissIsCalledWhenDismissIsCalled
{
[self.viewController dismiss];
XCTAssertMethodHasBeenCalled(@"reallyDismiss");
}
?
您可以将代码重构为
-(BOOL)dismiss {
if someCondition {
[self reallyDismiss];
return YES;
} else {
return NO;
}
}
- (void)testReallyDismissIsCalledWhenDismissIsCalled
{
XCTAssertTrue([self.viewController dismiss], @"reallyDismiss");
}
不直接,不。您通常会使用模拟库来注入您自己的该方法版本,以便您可以添加它被调用的期望或 subclass 目标 class 以便 subclass 可以拦截(并在需要时转发)您正在检查的方法调用。