2012-02-25 144 views
8

我有一些單元測試和模擬的經驗。在我有限的經驗中,我會用這兩者來測試一個服務層,例如,模擬(剔除?)數據庫以消除依賴關係,並專注於單元測試業務邏輯。單元測試REST API

現在我正在創建一個將使用RESTful Web服務的包裝器API實現。發回給我的json結果結構不在我手中,例如:Twitter。我只是建立客戶端與他們的API接口。我不確定如何去測試json結果的單元測試。現在我只是用靜態的json結構來嘲笑http請求的結果。這確保了json對我的pojos的反序列化是正確的,但我關心API的變化。如果api結構發生變化呢?如果api目前返回「標題」和明天返回「groovy_title」會怎麼樣?我的單元測試無法捕捉到。

從我的理解,雖然 - 單元測試應該是快速的。以前我會嘲笑分貝,現在我正在嘲笑http,但是我是否應該使用具體的http實現,以便立即通知突發api更改?還是有更好的方法來處理這種情況?

回答

4

我會繼續做你正在做的事,並模擬你的代碼和外部API之間的接口。正如你指出的那樣,這不會檢測到外部API的變化。

你可以寫集成實際去外部服務器測試API更改的測試。我懷疑你已經將進行交互的代碼分離出來到自己的服務器/模塊中,這樣你就可以在不受應用中超過1個抽象層的阻礙的情況下ping外部API。

請注意,您可以在不使用應用程序代碼的情況下構建這些測試;即只是wget或捲曲,並對結果做一些分析...

這個問題很重要;把我的頭頂部:

您需要一個網絡連接
較慢
外部服務可以暫時關閉 - 即失敗可能意味着不同的事情。