2009-02-17 27 views
4

在即將發佈的項目中,我將用C#編寫一個應用程序,該應用程序部分必須與HTTP服務器進行通信。我非常喜歡編寫TDD風格的代碼,如果我可以在我的測試中模擬所有的HTTP請求,我就會喜歡它。C#的輕鬆可嘲弄的HTTP客戶端框架#

這裏有任何人知道一個易於嘲笑的HTTP客戶端框架?

Ps。我通常使用Moq進行模擬。如果你知道一些免費的嘲笑框架,可以更好地嘲笑HTTP請求,那也會很好。

回答

6

DotNetOpenId,從中你可以重用代碼的一個開源項目,使用通過其所有調用的HTTP包裝類。在測試期間,注入一個模擬HTTP處理程序,以便可以在調用之前以編程方式設置響應。它有另一種模式,它託管自己的ASP.NET站點,以便可以執行完整的實際堆棧。

這很好,雖然它沒有作爲獨立的解決方案。如果你有興趣重複使用它,下面是一些與源代碼相關的鏈接。你可以在[email protected]上尋求幫助。

現場之一: StandardWebRequestHandler.cs

嘲笑:MockHttpRequest.csTestWebRequestHandler.cs

+0

謝謝!很有幫助! – theringostarrs 2009-07-17 01:20:38

0

我不認爲實際上有任何框架可以處理你想存檔的東西。畢竟只有你知道每個Http請求應該做什麼。所以基本上你有兩種選擇:

  1. 進行調用,並在另一邊使用虛擬實現。這可能是一個簡單的控制檯應用程序,它返回虛擬數據如果您需要更多邏輯,我會考慮使用對象數據庫 - 在我看來,它們完全適合這些應用程序。
  2. 在應用程序端使用模擬實現。如果這個實現有很多邏輯,不要使用任何模擬框架 - 創建一個具有所有邏輯的自定義模擬類。

希望這有助於

4

我建議你使用這個即System.Net.WebRequest框架支持。

定義一個非常簡單的接口,以及webrequest的簡單包裝。這樣你就可以得到你想要的東西,並且不會爲框架已經做好的事情添加外部依賴。

1

您可以使用WireMock.Net這是一個靈活的庫,用於使用請求匹配標準對Web HTTP響應進行存根和嘲諷。

這也可以很容易地在單元測試項目中使用。查看維基的詳細信息。

NuGet被發現here