2011-10-28 22 views
2

我使用黃瓜來做很多事情。我真的很喜歡它作爲一個BDD環境。如何使用Cucumber測試非Ruby,非Rack API的

所以我想用它作爲測試API的外部工具。我想要做的事情如:

Scenario: Hit api /info path and get info back 
    When I visit the API path '/info' 
    Then I should see the following text "Here's info on the API" 

或類似的東西。我主要想把這個API當作一個黑盒子,只測試輸入和輸出。我不打算檢查API內的任何內容。

我已經看過與Cucumber(例如Capybara)合作的大多數庫似乎都是圍繞基於Rack的應用程序設計的。我想要類似的東西,但不依賴Rack。

什麼寶石,如果有的話,存在沒有機架依賴。或者有沒有辦法使用Capybara來測試遠程服務器上的API?

回答

5

我不會使用Capybara來測試遠程API,因爲Capybara是用於測試應用程序的,用於測試帶有HTML UI的應用程序(Aslak在評論中指出)。

相反,我會將Cucumber *與HTTParty一起使用,這將成爲用於製作HTTP請求並整齊地解析它們的工具。這裏有一個想法:

When /^I visit the API path '(.*?)'/ do |path| 
    @result = HTTParty.get("http://theapi.com/#{path}") 
end 

Then /^I should see the following result:$/ do |result| 
    @result.should == result 
end 

的最後一步在這裏你會使用這樣的:

Then I should see the following result: 
    """ 
    { success: true } 
    """ 

* 我真的需要Rspec個人而言,我覺得語法不太笨拙。

+0

感謝瑞恩 - 你有什麼想法使用minitest -v- rspec? –

+0

使用您提供的步驟def重寫了一些內容,然後關閉並運行。正是我在想什麼。 –

+2

水豚不是用於測試*本地*應用程序。它用於測試帶有HTML UI的webapps。 Capybara也可以很好地處理* remote * web應用程序(使用它支持的許多驅動程序之一 - 例如硒)。它不適用於非HTML(即RESTful JSON/XML API)。 我推薦使用RackTest的Cucumber(如果它是一個Rack應用程序)或者如果不是,則使用HTTParty。 有關黃瓜書中兩種方法的完整章節。 –

1

我一直在使用黃瓜對付Drupal應用程序一段時間了。它運作良好。

幫我建立了水豚硒

https://github.com/thuss/standalone-cucumber

如果你想使用機械化,這是一個有點馬車。我必須使用0.3.0-rc3,因爲在重定向等問題後出現了一些問題。提交包含「[]」字符的字段名稱的表單仍然存在一些問題。我不記得我的團隊中的另一個人發現了這個錯誤。

+0

太棒了 - 感謝您的鏈接! –