如何对该hitTest
覆盖进行单元测试?
- (UIView*) hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView* hitView = [super hitTest:point withEvent:event];
// Do something based on hitView's properties
}
我面临的问题是
UIEvent
没有 public 构造函数,因此我无法创建UIEvent
在[super hitTest:point withEvent:event]
上产生不同的结果。或者,我可以创建一个模拟的
UIEvent
,但这意味着知道[super hitTest:point withEvent:event]
可以做什么,我不知道,即使我做了,它也可能会改变。另一个选择是混淆
[super hitTest:point withEvent:event]
(使用OCMock),但我不知道是否有可能仅混淆 super class 实现。 最佳答案
您可以包装对super的调用并使用部分模拟。
在要测试的类中,创建如下内容:
-(UIView *)checkHit:(CGPoint)point withEvent:(UIEvent *)event {
return [super hitTest:point withEvent:event];
}
然后在您的测试 class 中:
CGPoint testPoint = CGPointMake(1,2);
id mockHitView = [OCMockObject mockForClass:[UIView class]];
id mockSomething = [OCMockObject partialMockForObject:realObject];
[[[mockSomething stub] andReturn:mockHitView] checkHit:testPoint withEvent:[OCMArg any]];
[realObject hitTest:testPoint withEvent:nil];
关于iphone - 如何在iPhone中对这个hitTest替代进行单元测试?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8560717/