我需要开始为这个 iPhone 项目做一些 TDD。问题是它大量使用 API 数据。

我正在寻找一个很好的教程/指南/示例项目,它展示了如何在为 iPhone 运行每个测试之前实现 TDD 如何设置数据库。我倾向于使用 UISpec,但如果它做得更好,我愿意研究其他一些测试套件。此外,该项目已经包含 RestKit,它使用 UISpec 进行自己的测试,因此 UISpec 已经包含在 Xcode 项目中。

最佳答案

我是 RestKit 项目的首席开发人员,我建议您使用 而不是 使用 UISpec 进行测试。 RestKit 对 UISpec 的使用(更准确地说,是它的高度定制化版本)是开发早期的产物——我使用 UISpec 进行功能测试并且对携带这么多库犹豫不决。现在 UISpec 基本上是废弃软件,我已经开始使用 Square 的 KIF 进行 UI/功能测试。

对于新项目的单元测试,我喜欢 Kiwi ( https://github.com/allending/Kiwi ),因为它位于内置的 SenTestingKit 之上并提供 RSpec 风格的测试。来自 Pivotal Labs 的 Cedar ( https://github.com/pivotal/cedar ) 和 GHUnit ( http://gabriel.github.com/gh-unit/ ) 也很可靠。在不久的将来,RestKit 本身可能会从 UISpec 过渡。

现在,关于如何为您的测试设置数据库的问题。如果您查看 RestKit 中的 RKSpecEnvironment.h/m 文件,就会发现许多有用的单元测试方法。假设您正在使用 RestKit 的 Core Data 集成,RKSpecNewManagedObjectStore() 方法将拆除 Core Data 环境并通过删除持久存储为您设置一个清晰的数据库。

RestKit 自己的单元测试可以提供一些关于如何针对 API 数据进行单元的很好的引用(除了上面的测试工具关注点)。 RKSpecResponseLoader 类可用于将异步 REST 请求转换为程序步骤(它充当 RKObjectLoader 的委托(delegate),并将旋转运行循环以等待加载请求),您可以对其进行测试。因此,一般模式是清除数据库状态,设置您需要/期望的任何对象,然后执行 API 交互并对结果或 Core Data 中的新状态进行断言。

关于ios - 将 UISpec 与 API 数据结合使用的提示和教程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7216924/

10-12 02:49