gpt4 book ai didi

ios - 为 iOS 应用程序 stub /模拟 Web 服务

转载 作者:IT王子 更新时间:2023-10-29 07:46:00 24 4
gpt4 key购买 nike

我正在开发一个 iOS 应用程序,其主要目的是与一组远程网络服务进行通信。对于集成测试,我希望能够针对某种具有可预测结果的虚假网络服务运行我的应用程序。

到目前为止,我看到了两个建议:

  1. 创建一个向客户端提供静态结果的网络服务器(例如 here )。
  2. 实现不同的网络服务通信代码,基于编译时标志的代码将调用网络服务或从本地文件(exampleanother one)加载响应的代码。

我很好奇社区对每一种方法的看法,以及是否有任何工具可以支持这种工作流程。

更新:那我举个具体的例子吧。我有一个需要用户名和密码的登录表单。我想检查两个条件:

  1. wronguser@blahblah.com 登录被拒绝并且
  2. rightuser@blahblah.com 登录成功。

所以我需要一些代码来检查用户名 参数并向我发出适当的响应。希望这就是我在“假网络服务”中需要的所有逻辑。我该如何干净利落地管理它?

最佳答案

我建议使用 Nocilla . Nocilla 是一个使用简单 DSL stub HTTP 请求的库。

假设您要从 google.com 返回 404。您所要做的就是:

stubRequest(@"GET", "http://www.google.com").andReturn(404); // Yes, it's ObjC

之后,任何到 google.com 的 HTTP 都会返回 404。

一个更完整的示例,您希望将 POST 与特定正文和 header 匹配并返回固定响应:

stubRequest(@"POST", @"https://api.example.com/dogs.json").
withHeaders(@{@"Accept": @"application/json", @"X-CUSTOM-HEADER": @"abcf2fbc6abgf"}).
withBody(@"{\"name\":\"foo\"}").
andReturn(201).
withHeaders(@{@"Content-Type": @"application/json"}).
withBody(@"{\"ok\":true}");

您可以匹配任何请求并伪造任何响应。查看自述文件了解更多详情。

与其他解决方案相比,使用 Nocilla 的优势在于:

  • 速度很快。没有要运行的 HTTP 服务器。您的测试将运行得非常快。
  • 无需管理疯狂的依赖项。除此之外,您还可以使用 CocoaPods。
  • 它经过了很好的测试。
  • 出色的 DSL,将使您的代码真正易于理解和维护。

主要限制是它只适用于构建在 NSURLConnection 之上的 HTTP 框架,例如 AFNetworking、MKNetworkKit 或普通 NSURLConnection。

希望这对您有所帮助。如果您需要任何其他帮助,我随时为您提供帮助。

关于ios - 为 iOS 应用程序 stub /模拟 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10807480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com