如何在UI测试自动化中检查iOS模拟器中没有网络案例

vsnjm48y  于 12个月前  发布在  iOS
关注(0)|答案(1)|浏览(104)

在我的iOS应用程序中,当API calls由于网络不佳而失败时,应用程序将显示No network error screen。我必须检查这个错误屏幕是否正确显示或不在网络差的情况下,在自动化测试使用模拟器。但我找不到任何可能性关闭互联网手动在模拟器和检查是否No network屏幕显示。
我在MacOS中安装了Network Link Conditioner,并尝试在simulator上使用它。但是,在simulator settings -> developer中,没有名为Network Link Conditioner的部分来处理模拟器中的这个问题。那么,在模拟器中是否有其他解决方案来处理此网络情况?
我试图使手动网络差,并期待,如果错误屏幕是可见的正确.但是在iOS simulator中,没有turn off internet的选项。

kr98yfug

kr98yfug1#

这是模拟外部依赖的经典案例。如果您的应用程序在开发时考虑到了这一点,并实现了inversion of control(有时称为“依赖注入”),那么您可以相对容易地实现您在测试中所要求的效果。测试计划是这样的:
1.您必须针对某个条件进行池化,或者侦听某个事件,以确定网络何时处于较差或正常速度。我们称之为NetworkConditionsDetector。当这个NetworkConditionsDetector运行时,它为下游消费者生成一个事件,以便他们可以显示错误消息,正如您在问题中所解释的那样。确保NetworkConditionsDetector包含在协议中(也称为接口)。我们将此协议命名为NetworkConditionsDetectorProtocol,它也具有与NetworkConditionsDetector相同的功能需求。
1.确保在视图控制器或其他任何地方引用NetworkConditionsDetectorProtocol而不是NetworkConditionsDetector。
1.当视图控制器显示错误对话框时,您需要将该协议注入其中。或者通过视图控制器的构造函数,或者通过setter注入技术。
1.现在,在测试中,您可以替换实现NetworkConditionsDetectorProtocol的另一个对象。这叫嘲笑将这个“mock”对象注入到正在测试的视图控制器中。因为这个对象是你可以控制的,所以你现在可以随意生成事件来测试你的视图控制器的功能。

相关问题