gpt4 book ai didi

iphone - 如何在 iPhone 中对这个 hitTest 覆盖进行单元测试?

转载 作者:行者123 更新时间:2023-11-29 11:18:02 24 4
gpt4 key购买 nike

我如何对这个 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];
}

然后在你的测试类中:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com