2011-12-15 35 views
4

我寫了我自己的FaceBook庫,它使用實際的Curl請求,而不是libcurl。如何測試基於Curl的FaceBook API實現?

有沒有辦法測試它?我這樣問是因爲大多數解決方案都涉及使用類似fakeweb的東西,據我所知,這些東西在這裏不起作用。

現有的代碼可以找到on my github page

+3

不要挑剔主持人的編輯,但天哪,「FaceBook」?! – vise 2011-12-24 20:15:33

回答

1

你可以嘲笑Request.dispatcher預期的行爲,非常像Fakeweb會做的。

這個文件上有幾個例子,特別是https://github.com/chrisk/fakeweb/blob/master/lib/fake_web/ext/net_http.rb#L44

+0

我選擇這個答案是因爲你的答案比VCR圖書館的建議要快,而這個建議通常是我的選擇,但我確實投了其他人的意見,以及我的讚賞。 – vise 2011-12-30 18:20:21

+0

謝謝!我希望你能工作。 – 2011-12-30 19:27:16

2

一種方法是使用測試模式不同的主機/端口(例如本地主機:12345)

然後在您的測試運行的端口上西納特拉或使用WEBrick的servlet,您配置的要求作出迴應你的代碼應該是

+1

使用這種方法,您可以輕鬆地在代理服務器中使用VCR來錄製和回放響應。有關示例,請參閱https://gist.github.com/1434673和https://www.relishapp.com/myronmarston/vcr/docs/middleware/rack。 – 2011-12-24 16:26:26

1

當運行您的測試/規格時,請將您的Request類的run方法掛接到Marston VCR library。請參閱現有的library_hooks subdir以獲取有關如何執行此操作的示例和想法 - fakeweb實施是一個很好的開始。

VCR可以很好地與Facebook這樣的實時服務配合使用,因爲它可以「按原樣」捕獲互動,並且在服務發生變化時可以輕鬆地重新錄製VCR。

但是,我遇到了圖書館的問題。您需要要求cgijson庫;它看起來也需要Rails環境(它無法在Hash上找到with_indifferent_access)。