2017-07-20 72 views
0

我想知道如何(或者甚至可以)在運行Webdriver測試返回存根輸出時替換由我的應用程序所做的API調用。該應用使用了很多完全依賴於時間範圍或第三方信息的組件,這些組件對於測試而言不會一致或可靠。目前我沒有辦法測試這些元素而不使用'運行這個測試如果...'作爲一種遠非理想的方法。使用C#Selenium WebDriver模擬API響應

我的測試是用C#編寫的。

我發現了一個名爲xhr-mock的Javascript庫,它似乎有點像做我想做的事,但我不能用我當前的測試解決方案。

對這個問題的正確答案可能是'那是不可能',這將是令人討厭的,但經過一整天閱讀Google上不相關的文章,我擔心這可能是結果。

+0

你的問題是什麼?請閱讀這些文章:[How-to-ask](https://stackoverflow.com/help/how-to-ask)和[Minimal Complete Verifiable Example](https://stackoverflow.com/help/mcve)。 – Tom

+0

我的問題就是這樣。沒有更多的細節,因爲它是一個高層次的方法問題,而不是一個特定的代碼。 –

回答

1

WebDriver測試是端到端,黑匣子,用戶界面測試。 如果您的頁面取決於外部網關 您將擁有一個服務和模型來包裝整個系統的網關 ,您可能已經在測試中引用了您的模型。

鑑於網關是時間依賴的,您應該在測試中儘可能使用您的api圖層消耗的服務,並且只需檢查網關隨時返回的信息是否顯示在頁面上期待它。您將有單元測試來正確檢查響應模型。

正如你所擔心的那樣,強制性的「這可能是不可能的」:鑑於你的網關需要改變的級別,你可能需要降低準確性或者在測試中引入某種形式的刷新,兩個電話將稍微分開。

鑑於不可預測的網關,您可能需要模擬或存根API才能開發設計。如果您在任何特定環境中使用真實或虛假的網關進行測試,那麼這將取決於您。這些測試不應該在生產環境中運行,所以我會使用假網關作爲ci測試環境,並使用手動測試環境的真實網關,其中BBT故障不會影響您的發佈管道。

+0

這是一個理想的存根解決方案,但必須通過測試進行配置,而不是依賴於環境的部署方式。如果我們可以選擇多部署方案,那麼這樣做會有效,但這將會非常昂貴。基本上我覺得任何解決方案都可能沒有可行的投資回報率。 –

+0

如果元素不存在,那麼在測試之前,您必須忽略測試或將其注入頁面。如果元素在那裏,您可以將其緩存在外部存儲中,以備下次使用時不使用。您也可以在您的其他測試中刪除它。取決於您的其他元素對變化的響應程度。 –