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

Chr*_*ker 4 tdd bdd ios uispec restkit

我需要开始为这个iPhone项目做一些TDD.问题是它使用的API数据非常多.

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

Bla*_*ers 12

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

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

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

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