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