2011-11-13 45 views
2

我正在開發一個Rails應用程序,它有很多對外部API的依賴關係,例如Delicious。 所有API共享兩個工作流程:在Rails中測試很多外部API

  • 在第一次調用時,它們將自開始時間以後加載所有數據。
  • 以下所有調用都會加載按上次執行時間過濾的數據(如果支持)。

以真實的方式測試它們,我必須爲每個API創建一個測試帳戶,或者至少使用我的私人測試帳戶。即使與VCR,因爲他們會被調用一次。而我最大的問題是:我必須用DateTime來模擬上面提到的兩種不同的工作流程。雖然Timecop使它很容易,它感覺像屁股疼痛。

另一種方法是完全僞造API調用及其相應的響應,但這意味着沒有真正的測試,而且我也不會意識到API的更改或問題。

有什麼建議嗎?也許這兩種方式的好組合?

回答

1

兩者兼而有之。

首先嘲笑你的常規運行測試套件中的所有東西。爲所有的細粒度模型/控制器測試做到這一點。

然後添加端到端測試(例如在集成測試中),這些測試涵蓋了碰到真實(測試)服務器的常見工作流場景。

或者使用不同的測試套件進行端到端測試,例如黃瓜代替Test :: Unit或硒/ Watir,只要它不同於您的常用測試套件