单元测试方法使用 - [UIScrollView zoomToRect:animated:]

时间:2014-05-26 08:32:32

标签: ios objective-c unit-testing uiscrollview

UIScrollView的自定义子类中,如何对名为-zoomToPoint:scale:animated:的方法进行单元测试?

我想测试一下这种方法是否正确修改了contentOffset的{​​{1}}和zoomScale。我希望此方法的实现能够使用MyScrollView,因为这似乎是将区域聚焦在-[UIScrollView zoomToRect:animated:]中的常规方法。

我遇到了麻烦,因为即使我将UIScrollView作为NO的{​​{1}}参数传递,它似乎仍然有效。我希望animated能够立即设置-zoomToRect:animated:UIScrollView,但似乎并非如此。

2 个答案:

答案 0 :(得分:2)

您可以使用FBSnapshotTestcase

“快照测试用例”采用已配置的UIView或CALayer,并使用renderInContext:方法获取其内容的图像快照。它将此快照与存储在源代码存储库中的“参考图像”进行比较,如果两个图像不匹配则无法通过测试。

它将帮助您测试所需的精确缩放比例

答案 1 :(得分:0)

我想出了一个示例内容大小,边界大小,缩放比例,最小缩放比例,最大缩放比例,目标缩放点,目标缩放比例,预期内容偏移和预期缩放比例的表格。换句话说,该表总结了给出一堆可能的输入的预期输出,并努力运用我能想到的每个边缘情况。

我编写了测试用例来验证此表中的每个值组合。每个测试都会设置一个包含给定参数的滚动视图,使用-zoomToPoint:scale:animated:参数animated调用NO,然后验证contentOffsetzoomScale。在所有情况下,我都将NO传递给animate参数,所以我假设它在动画时给出了相同的最终结果。如果将来有必要,我可以添加将YES传递给animated参数的测试,并在让多个运行循环通过后验证contentOffsetzoomScale,但这将是另外一件事要弄清楚,我现在不想这样做。

因此,我生成的-zoomToPoint:scale:animated:方法行为在我能够测试的每个边缘情况下看起来都很棒。