2013-02-21 166 views
40

有人可以解釋這兩個平臺之間的差異? 都是BDD的一部分,但爲什麼我應該同時使用一個或其他,或兩者? 感謝您的回答黃瓜vs水豚

回答

5

cucumbercucumber是一款BDD工具,它以業務可讀的領域特定語言表達測試場景。

capybara是ROR應用程序的自動化測試工具(經常使用)。

在capybara github頁面上,有一個using capybara with cucumber的例子。

+7

水豚不是特定於ROR,它可以用來測試用任何語言編寫的網絡應用程序。 – 2013-10-18 10:46:12

4

黃瓜是一種通用的BDD工具。它對Web應用程序一無所知。所以黃瓜步驟定義稱Capybara爲了測試網絡應用程序。

86

水豚是一種工具,可以像人類一樣與網站進行交互(例如訪問網址,點擊鏈接,在表單中輸入文字並提交)。它用於模擬用戶通過網站的流量。隨着水豚你可以寫這樣的事情:

describe "the signup process", :type => :feature do 
    before :each do 
    User.make(:email => '[email protected]', :password => 'caplin') 
    end 

    it "signs me in" do 
    visit '/sessions/new' 
    within("#session") do 
     fill_in 'Login', :with => '[email protected]' 
     fill_in 'Password', :with => 'password' 
    end 
    click_link 'Sign in' 
    page.should have_content 'Success' 
    end 
end 

黃瓜是寫一個映射到代碼人類可讀的測試工具。有了它,你可以把上面的例子是這樣的:

Scenario: Signup process 

Given a user exists with email "[email protected]" and password "caplin" 
When I try to login with "[email protected]" and "caplin" 
Then I should be logged in successfully 

的幾乎純文本的解釋是通過各地非開發人員有用的,但還需要映射到其實際工作的一些代碼(步驟定義)。

通常,如果您正在測試網站並使用Cucumber,如果您需要與非開發人員共享這些測試,您將使用Capybara。這兩個條件是獨立的,所以你可以使用一個沒有其他或兩個或沒有。

PS:在代碼片段中還有一些RSpec。這是需要的,因爲黃瓜或水豚本身不能測試的東西。他們依靠RSpec,Test :: Unit或minitest來完成實際的「通過或失敗」工作。