2011-08-27 21 views
4

我需要開始爲這個iPhone項目做一些TDD。問題在於它相當重要地使用API​​數據。使用UISpec API數據的技巧和教程

我正在尋找一個很好的教程/指南/示例項目,展示如何在每次測試運行iPhone之前實施TDD如何設置數據庫。我傾向於使用UISpec,但我願意考慮一些其他測試套件,如果它做得更好。此外,該項目已經包含RestKit,它使用UISpec進行自己的測試,所以UISpec已經包含在Xcode項目中。

回答

12

我是RestKit項目的首席開發人員,我建議您使用UISpec進行測試,而不是使用UISpec 而不是。 RestKit使用UISpec(更準確地說,是一個簡化的高度定製的版本)是開發早期的一個工件 - 我使用UISpec進行功能測試,並且猶豫是否攜帶這麼多的庫。這些天來,UISpec基本上被放棄了,我已經開始使用Square的KIF進行UI /功能測試。

對於新項目的單元測試,我喜歡Kiwi(https://github.com/allending/Kiwi),因爲它位於內置的SenTestingKit之上,並提供RSpec樣式測試。來自Pivotal Labs和GHUnit的Cedar(https://github.com/pivotal/cedar)(http://gabriel.github.com/gh-unit/)也是固體。 RestKit本身很可能在不久的將來會從UISpec過渡。

現在,關於如何爲您的測試設置數據庫的問題。如果您查看RestKit中的RKSpecEnvironment.h/m文件,則有許多有用的單元測試方法。假設您正在使用RestKit的核心數據集成,RKSpecNewManagedObjectStore()方法將拆除核心數據環境,並通過刪除持久性存儲來爲清除數據庫設置備份。

RestKit自己的單元測試可以提供一些關於如何針對API數據進行單元測試的良好參考(除了上述測試工具的問題)。 RKSpecResponseLoader類對於將異步REST請求轉換爲可以測試的過程步驟(它充當RKObjectLoader的委託並將旋轉運行循環以等待請求加載)很有用。因此,一般模式是清除數據庫狀態,設置您需要/期望的任何對象,然後執行API交互並根據Core Data中的結果或新狀態進行斷言。

+0

謝謝布萊克。我希望你能在這方面權衡。我以前從未聽說過KIF。所以你會推薦使用一個簡單的sinatra服務器來處理像RestKit這樣的.json fixture文件來進行API測試。它似乎可能是最簡單的方法。我想知道試着讓FactoryGirl工作是否值得。 –