我的一些应用程序从互联网上获取数据。我养成了编写单元测试的习惯,我怀疑如果我为互联网返回的值编写测试,我会遇到延迟和/或可靠性问题。
测试“位于Web请求另一端”的数据的有效方法是什么?
我正在使用Xcode附带的库存单元测试工具包,但问题理论上适用于任何测试框架。
答案 0 :(得分:3)
Unit
测试专门针对您班级的业务逻辑。没有延迟,可靠性等,因为你会使用一些模拟对象来模拟你实际交互的内容
你所描述的是integration
测试的某种形式,因为OP似乎不是你的意图
你应该通过模拟“模糊”另一端,而不是真正访问网络,远程数据库等。
答案 1 :(得分:1)
其中:
所有这些都应该优雅地失败(无论是在服务器端还是在客户端)
答案 2 :(得分:1)
我向freenode.net上#macdev IRC频道的老人提出了这个问题,我得到了一些非常好的答案。
Mike Ash(mikeash.com)建议在我的应用程序中实现本地Web服务器。对于复杂的情况,我可能会这样做。但是,我只是使用initWithContentsOfURL:(NSURL *)url
的一些内置NSData
方法。
对于更简单的情况,mike说另一种方法是将base64编码的伪数据直接传递给NSData初始化器。 (使用data://dummyDataEncodedAsBase64GoesAfterTheDataProtocolThingy
。)
同样,“alistra”建议使用指向包含模拟数据的文件的本地文件URL。