在UIScrollView
的自定义子类中,如何对名为-zoomToPoint:scale:animated:
的方法进行单元测试?
我想测试一下这种方法是否正确修改了contentOffset
的{{1}}和zoomScale
。我希望此方法的实现能够使用MyScrollView
,因为这似乎是将区域聚焦在-[UIScrollView zoomToRect:animated:]
中的常规方法。
我遇到了麻烦,因为即使我将 UIScrollView
作为NO
的{{1}}参数传递,它似乎仍然有效。我希望animated
能够立即设置-zoomToRect:animated:
和UIScrollView
,但似乎并非如此。
答案 0 :(得分:2)
您可以使用FBSnapshotTestcase
“快照测试用例”采用已配置的UIView或CALayer,并使用renderInContext:方法获取其内容的图像快照。它将此快照与存储在源代码存储库中的“参考图像”进行比较,如果两个图像不匹配则无法通过测试。
它将帮助您测试所需的精确缩放比例
答案 1 :(得分:0)
我想出了一个示例内容大小,边界大小,缩放比例,最小缩放比例,最大缩放比例,目标缩放点,目标缩放比例,预期内容偏移和预期缩放比例的表格。换句话说,该表总结了给出一堆可能的输入的预期输出,并努力运用我能想到的每个边缘情况。
我编写了测试用例来验证此表中的每个值组合。每个测试都会设置一个包含给定参数的滚动视图,使用-zoomToPoint:scale:animated:
参数animated
调用NO
,然后验证contentOffset
和zoomScale
。在所有情况下,我都将NO
传递给animate
参数,所以我假设它在动画时给出了相同的最终结果。如果将来有必要,我可以添加将YES
传递给animated
参数的测试,并在让多个运行循环通过后验证contentOffset
和zoomScale
,但这将是另外一件事要弄清楚,我现在不想这样做。
因此,我生成的-zoomToPoint:scale:animated:
方法行为在我能够测试的每个边缘情况下看起来都很棒。