2010-08-01 53 views
4

有沒有辦法模擬出Curb的Easy.perform方法進行單元測試?我用它來打擊Facebook的圖形API,並且沒有一個http模擬庫似乎支持Curb。模擬出Curl :: Easy.perform? (在路邊)

這裏最好的辦法是什麼?

+0

您使用什麼測試框架? (Test :: Unit,RSpec,other?) – 2010-08-01 17:20:16

回答

0

我真的認爲fakeWeb是虛假網絡電話的好方法;無論您使用哪種HTTP庫,您都只需指定要接收的響應文本和代碼。

描述如下:

FakeWeb是Ruby的僞造網頁 請求幫助。它工作在全球 水平,沒有從github repository修改代碼或 寫廣泛存根

例子:

FakeWeb.register_uri(:get, "http://example.com/test1", :string => "Hello World!") 

Net::HTTP.get(URI.parse("http://example.com/test1")) 
=> "Hello World!" 

Net::HTTP.get(URI.parse("http://example.com/test2")) 
=> FakeWeb is bypassed and the response from a real request is returned 
+0

是的,fakeweb很棒,但是默認的curb安裝將使用Wrap Curl,而不是使用Net:HTTP,所以Fakeweb將無法攔截這些調用。我在測試SOAP服務之類的時候遇到了同樣的問題,並且使用SOAP-ui來構建模擬結果 – Doon 2010-08-02 13:41:41

+0

@Doon ......你說得對!每天學些新東西。和路邊支持是http://github.com/chrisk/fakeweb/issues#issue/10 – 2010-08-02 13:47:59

+0

上的問題我只是想包括不支持路邊支持的想法(通過Gemfile,因爲這是一個軌道3測試應用程序),試圖強制它重新使用Net :: HTTP。我認爲它會起作用,但我已經有了模擬服務,而soap-ui給了我更好的選擇,以便在調用中提供不同的數據。所以我放棄了,回到了編碼。唯一的缺點是,如果我忘記開始模擬,我會得到很多錯誤。但我可以忍受它。 – Doon 2010-08-02 19:41:05