XCUI 测试 UIScrollView 以获取当 contentOffset 更改时应触发的事件

XCUI Test UIScrollView for event that should fire when contentOffset changes

我是测试新手,并且在如何测试我们的 UI 逻辑方面遇到了很大的困难。具体来说 - 测试事件应该在 UIScrollView.

的 contentOffset 变化触发时触发

我在测试时面临的主要问题是 XCUI 似乎只允许我验证 UI 更改,但我正在尝试测试的级联事件的结果不执行任何 UI 更改 - 结果只是在后台调用 http。 这可以测试吗?

(如果需要,这里有我的用例的详细说明:)

当应用程序启动时,表格视图会填充 20 个或更多单元格。当用户滚动时,有代码可以检测每个单元格何时可见 50% 或更大。当一个单元格在表格视图中第一次变为 50% 或更多可见时,将进行 http 调用。 (这是我正在尝试测试但还没有找到方法)

非面向用户的行为(如发出网络请求)必须通过单元测试进行测试,而不是 UI 测试,因为 UI 测试无法访问除 UI,它只是屏幕上内容的表示(XCUIElements),而不是您应用中的实际 UIView 对象。

但是,这里的折衷是单元测试不会在很高的级别上进行测试,而应该只测试项目的非常小的范围,其中有很多 mocking/stubbing。

我在这里的建议是结合使用单元测试和 UI 测试。使用单元测试来检查网络调用是否在正确的位置进行,并使用 UI 测试来测试应用程序是否启动以及滚动时单元格是否显示正确的内容。对于 UI 测试,您可以对来自服务器的响应进行存根,以确保您始终使用存根框架(如 OHHTTPStubs)获取有效数据。这两种类型的测试一起可以测试你想要的。