2012-08-22 56 views
0

我有兩個應用程序,也就是說,A和B,通過API互相交談,現在我寫黃瓜試驗A,我有兩個選擇:兩個應用程序,如何測試通信

  1. 只需測試API是否發送到B並存根B的響應並存根B的響應,併發送真正的請求到B,並用VCR記錄請求/響應

我更喜歡選項#1,但我的同事說至少需要一個真正的請求來確保系統(包括A和B)正在工作。

我擔心的是:

  1. 如何對於B從A的測試準備測試數據?

  2. 它的脆弱,混合在一起,什麼都改變了B可引起一

任何評論失敗?

回答

0

對於大多數測試,存根請求/響應,測試在脫機時會通過的方式,或者不是。

對於一個測試,做一個簡單的測試,外部服務表現爲你的存根和嘲笑說應該。

E.G.執行獲取請求仍會返回JSON,其中包含您希望確保您的mock有效的屬性。

大多數情況下,測試套件不應監視外部服務的「啓動時間」。只是它表現了你的期望。

對於正常運行時間的問題,您應該查看系統管理員一面Nagios,Pingdom,Pagerduty或什麼不是。

+0

第二段,我可以看到你m恩,你試圖做一個測試,以確保模擬不過時,在我的情況下,我認爲測試應該去B應用程序(外部服務),它應該有一個測試,以確保它返回它承諾,謝謝你的回覆,但我不能同意你的第二段,:D – leomayleomay

0

您正在寫黃瓜測試,意味着它是一個集成測試。 對於集成測試,您最好不要嘲笑任何東西,這是保存應用程序的最後一名安全警衛。

所以你最好發一次真正的請求,以確保你的請求是正確的,你可以隨時重複這個真實的請求。

的解決1問題:實施

  1. 你不能確保b更改API
  2. 你不能確保一個發送正確的參數給B
  3. 很難嘲笑複雜的要求

所以我sugguest爲B創建一個沙盒應用程序,使真正的請求