iPhone 的 Mockup Web 服务
Posted
技术标签:
【中文标题】iPhone 的 Mockup Web 服务【英文标题】:Mockup webservice for iPhone 【发布时间】:2010-08-16 10:46:01 【问题描述】:我想为 iPhone 制作一个应用程序,作为 ObjC 和 Cocoa 编程的介绍。我是 .net 开发人员,所以在 Mac 上编程对我来说是一个全新的世界:)
我的应用程序将与 Web 服务通信。我想使用iCuke 作为测试框架,并且我不想每次运行测试套件时都连接到该网络服务。那么如何模拟 Web 服务响应以进行测试呢?一种解决方案是使用SoapUI,但也许有一些解决方案不使用外部工具。
【问题讨论】:
如果您正在编写后端,请考虑使用 RESTful 方法来减少电汇和处理开销。我为 ios 找到了一些好的 JSON 编写器/解析器,但没有好的 SOAP 库。最接近你的是 wsdl2objc 的噩梦代码生成。 不,我不能使用 REST,只能使用纯 SOAP :( 【参考方案1】:我会为应用程序中对 Web 服务的调用编写一个包装器。 伪代码示例
CallWebService (action, options,...)
// Code for connectiong to Webservice
然后你只是模拟那个函数,就像你想要任何其他函数一样
CallWebService (action, options,...)
return true;
通过这种方式,您可以模拟 Web 服务,而不必担心它是 Web 服务或数据库连接或其他任何东西。你可以让它返回 true 或其他什么。
祝你好运
更新
为了让这个想法更进一步,让你的测试更加强大,你可以使用某种测试参数或环境参数来控制在模拟的 webservice 方法中发生的事情。然后,您可以成功测试您的代码如何处理来自 Web 服务的不同响应。 再次使用伪代码:
CallWebService (action, options,...)
if TEST_WEBSERVICE_PARAMETER == CORRUPT_XML
return "<xml><</xmy>";
else if TEST_WEBSERVICE_PARAMETER == TIME_OUT
return wait(5000);
else if TEST_WEBSERVICE_PARAMETER == EMPTY_XML
return "";
else if TEST_WEBSERVICE_PARAMETER == REALLY_LONG_XML_RESPONSE
return generate_xml_response(1000000);
以及要匹配的测试:
should_raise_error_on_empty_xml_response_from_webservice()
TEST_WEBSERVICE_PARAMETER = EMPTY_XML;
CallWebService(action, option, ...);
assert_error_was_raised(EMPTY_RESPONSE_FROM_WEBSERVICE);
assert_written_in_log(EMPTY_RESPONSE_LOG_MESSAGE);
...
等等,你明白了。 请注意,我所有的示例都是 Negative 测试用例,但这当然也可以用于测试 Positive 测试用例。
【讨论】:
我认为这是一个很好的解决方案。我制作了一个@protocol,以及两个实现它的@interface。似乎它有效:) 很高兴您喜欢这个回复。我已经更新了它,使测试更加强大,以测试您的系统处理来自 Web 服务的响应。【参考方案2】:我不确定我的解决方案是否适合您的需求,但也许我的意见在这里会有所帮助。 我在我的应用程序中使用了很多不同的 web 服务,它们都使用 xml 输出,所以我为测试目的所做的是在我的应用程序中编写模拟 xml 文件,而不是使用放置在网络服务器。
我这样做主要是因为定义了 xml 输出,因此我可以在同时开发服务本身的同时实现我的解析器和应用程序的其余部分。
【讨论】:
跟我做的一模一样以上是关于iPhone 的 Mockup Web 服务的主要内容,如果未能解决你的问题,请参考以下文章
iPhone/Sqlite - 如何仅从服务器获取更改的数据?