iOS:用于测试的可编程网络链路调节器

时间:2016-03-07 22:03:04

标签: ios nsurlsession

有没有办法在代码运行时为您自己的代码可编程地创建类似iOS Network Link Conditioner的效果?

我想测试的具体条件是"登录流程的第1步有效,但网络会切断第2步"。这很难手动测试,因为我猜您必须设置断点,打开飞行模式,然后恢复应用程序。这会引入观察错误,因为断点会影响应用程序的计时和控制流程。

理想情况下,您可以设置类似于实际网络链路调节器的延迟和丢失参数,但即使只是能够在特定时间打开和关闭网络就足够了。

1 个答案:

答案 0 :(得分:0)

最好的方法是使用模拟对象代替NSURLSession,它可以将数据传递给真正的NSURLSession类,也可以生成假错误。例如,在前缀标题中,您可以添加一个条件#define,用不同的类名替换NSURLSession,然后在包装类的标题和实现文件中添加#undef。 / p>

您还可以通过调整应用程序调用的各种方法并使用自定义逻辑包装它们,将真正的NSURLSession类转换为模拟对象。

如果您决定采用调和方法,那么我建议您阅读https://blog.newrelic.com/2014/04/16/right-way-to-swizzle/以了解如何避免常见错误(虽然我猜测测试代码永远不会发布,但这一点不那么重要)。