2014-03-18 65 views
18

誰能告訴我rspec,水豚和黃瓜之間的區別?rspec,水豚和黃瓜之間的差異

group :development, :test do 
    gem 'rspec-rails', '~> 2.0' 
end 

group :test do 
    gem 'capybara', '~>2.1.0' 
end 

在JavaScript中,我將Jasmine視爲我的單元測試框架。這三個寶石在Ruby環境中做了什麼?

回答

48

rspec是一個全功能的測試框架,可以讓你寫什麼的Rails認爲單元測試,功能測試和集成測試。所有這些都通過Rails應用程序的各個層來運行Ruby代碼。所有這些測試都會模擬對Rails應用程序的請求,但實際上不會通過網絡端到端地運行應用程序。

cucumber是一個基於瀏覽器的集成測試框架,該框架允許寫入,針對從自動化的Web瀏覽器中訪問整個Rails應用程序運行自動測試。這使您可以編寫有關JS或CSS的瀏覽器內行爲的自動化測試。 Cucumber在集成測試中提供了一個獨特的角度,它使用通過正則表達式映射到代碼的純英文規範。這允許更自然的「行爲驅動開發」模型 - 從用戶的角度以簡單的語言描述Web應用程序應該做什麼。

capybara是一個特殊的web驅動程序,它爲使用無頭webkit的cucumber集成測試框架提供動力。這允許運行無頭(無UI)Chrome/Webkit瀏覽器進行自動化測試。這在開發中非常有用,特別是在遠程測試/持續集成服務器上。

所以rspeccucumber是被測試框架與自己指定的東西的方式類似。 rspec有一個很好的DSL,它是非常可讀的,而實際的代碼。 cucumber將純文本描述映射到真實代碼。

雖然cucumber通常用在水豚之上,你也可以用rspec來驅動capybara集成測試。測試用rspec或黃瓜編寫,但capybara是一個集成引擎。