我的一些应用程序从互联网上获取数据。我开始编写单元测试的习惯,并且我怀疑如果我为从互联网返回的值编写测试,我会遇到延迟和/或可靠性问题。一个单元如何测试网络相关操作?
什么是测试“位于Web请求的另一端”的数据的有效方法?
我正在使用Xcode附带的股票单位测试工具包,但这个问题在理论上适用于任何测试框架。
我的一些应用程序从互联网上获取数据。我开始编写单元测试的习惯,并且我怀疑如果我为从互联网返回的值编写测试,我会遇到延迟和/或可靠性问题。一个单元如何测试网络相关操作?
什么是测试“位于Web请求的另一端”的数据的有效方法?
我正在使用Xcode附带的股票单位测试工具包,但这个问题在理论上适用于任何测试框架。
我提出了这个问题上freenode.net上#macdev IRC频道德高望重的人,和我有一个很少有很好的答案。
Mike Ash(mikeash.com)建议在我的应用程序内部实现本地Web服务器。对于复杂的情况,我可能会这样做。但是,我只是使用initWithContentsOfURL:(NSURL *)url
中的一些内置方法NSData
。
对于更简单的情况,mike表示另一种方法是将base64编码的虚拟数据直接传递给NSData初始值设定项。 (使用data://dummyDataEncodedAsBase64GoesAfterTheDataProtocolThingy
。)
同样,“alistra”建议使用指向包含模拟数据的文件的本地文件URL。
除其他:
所有这些都应该优雅地失败(无论是在服务器端或客户端)
Unit
测试专注于您班级的业务逻辑。不会有延迟,可靠性等问题,因为您会使用一些模拟对象来模拟实际交互的内容。
你所描述的是某种形式的integration
测试,对于OP来说似乎不是你的意图。
你应该“晦涩”的另一端被嘲笑并没有真正访问网络,远程数据库等
但是,如何确保我的“成功”案件实际通过? – Moshe