【问题标题】:Confusion with iOS Unit Tests与 iOS 单元测试混淆
【发布时间】:2014-03-26 21:07:40
【问题描述】:

我可能对 iOS Xcode 中的 XCTests 有误解。

我想在用户输入他们的输入后测试我是否获得了正确的 json 数据。

我有一个名为 HttpRequest.h 和 .m 的 obj c 类文件。该类中的代码主要用于连接和设置 HttpRequest 为 GET 或 POST。

在我的 viewController X 中,有一个方法可以获取数据并将其保存在字典中。

我的问题是如何将在 viewController X 中获取的同一个字典抓取到我的 test.m 文件中,以比较并将其应用于 XCTAssertEqualObjects 之类的代码。在我阅读/观看的大多数教程中,他们基本上建立了一个新的 json 方法来获取数据 IN .m 文件。所以我对单元测试应该如何按照传统方式进行并根据我的代码正确构建有点困惑。

【问题讨论】:

    标签: ios objective-c json unit-testing xctest


    【解决方案1】:

    如果您发现难以测试代码的特定部分,这通常是您的代码结构不正确的好兆头。

    例如,从 Web 服务获取数据不应该是视图控制器的工作。您应该(听起来像您这样做)一个单独的类来实现这一点。

    您的请求类应该有自己的一组单元测试,您只需测试该类的功能 - 您的视图控制器应该调用相同的方法。您将传入一些已知参数(以模拟用户输入)并检查预期的响应。

    视图控制器对该响应的处理是一个单独的功能位,并且应该具有单独的测试,具有已知的输入,不依赖于 Web 服务。

    依赖于 Web 服务运行的单元测试有点棘手 - 如果 Web 服务关闭,即使您的代码没有任何问题,您的测试也会失败。这就是为什么人们在单元测试期间使用 OHHTTPStubs 之类的东西来返回对 Web 调用的已知响应。话虽如此,拥有一组连接到 Web 服务的测试很有用,这对于诊断服务端是否存在问题很有用。

    我已经写过一种编写 Web 服务使用者类的方法,该方法有助于测试并简化它们的使用 here,您可能会觉得这很有用。 github 上有一个随附的示例项目,其中包括单元测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多