使用UISpec和API数据的提示和教程

时间:2011-08-27 19:40:43

标签: ios tdd bdd restkit uispec

我需要开始为这个iPhone项目做一些TDD。问题在于它非常重视API数据。

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

1 个答案:

答案 0 :(得分:12)

我是RestKit项目的首席开发人员,我建议你使用UISpec进行测试。 RestKit使用UISpec(更确切地说,它是一个简化的高度定制版本)是开发早期的一个工件 - 我使用UISpec进行功能测试,并且对于携带如此多的库犹豫不决。这些天UISpec本质上是放弃软件,我已经转向使用Square的KIF进行UI /功能测试。

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

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

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