RSpecとキュウリの両方がテストフレームワークです。 RSpecには従来のユニットテスト(アプリケーションのクラスまたはアプリケーションの一部をアプリケーションの他の部分とは独立してテストすることを意味する)が含まれているため、モデルはあなたのモデルがしなければならないことをやります。
RSpecとキュウリの両方が受け入れテストに使用されます(ATDD、BDD、Example by Exampleなど)。これは、ビジネスケース駆動の統合テストです。つまり、ユーザーがアプリケーションを使用する方法をシミュレートし、完全なRailsスタックを使用するため、アプリケーションのさまざまな部分が一緒に動作する方法の問題は、単体テストでは見つからない見つける。
RSpecとCucumberの主な違いは、ビジネス上の可読性です。キュウリの主な目的は、仕様(機能)がテストコードとは別のものであるため、製品の所有者がコードを掘り下げることなく仕様を提供または確認できることです。これらはキュウリであなたが作った.featureファイルです。 RSpecにも同様のメカニズムがありますが、代わりに、ビジネス仕様を含むDescribe、Context、またはItブロックでステップを記述し、そのステートメントを実行するコードをすぐに作成します。このアプローチは、開発者が少しでも簡単に作業できますが、技術者以外の方にとっては少し難しくなります。
どちらを使用しますか?あなたが唯一の開発者と製品の所有者であれば、私はRSpecに固執します。技術者にとっては理解しやすいと感じていますし、スコープを絞って管理していく上でいくつかの利点があり、テストのためのRegExsステップ。あなたがクライアントのためにこれを構築していて、仕様に関して実際に実習を行っている場合は、受入れテストのためにCucumberに行き、Unit TestsのRSpecを使用してください。
わずか2間の主な違いを証明するために:
キュウリ:
#articles.feature
Given an article exists called "Testing Demonstration"
When I visit the list of articles
Then I should see an article called "Testing Demonstration"
#article_steps.rb
Given /^an article exists called "(.+)"$/ do |title|
FactoryGirl.create(:article, title: title)
end
When /^I visit the list of articles$/ do
visit articles_path
end
Then /^I should see an article called "(.+)"$/ do |title|
page.should have_content title
end
RSPEC
describe "Articles" do
let(:article) { FactoryGirl.create(:article) }
context "Index Page" do
before { visit articles_path }
it { page.should have_content article.title }
end
end
をこのブログシリーズはRSpecのと一緒に行く得ることに優れています:http://everydayrails.com/2012/03/12/testing-series-intro.html
出典
2012-08-01 15:37:35
DVG
さらにあなたを混乱させるために、Minitestもオプションになる可能性があります –
、さらにはcapybara –
Capybaraは実際にテストフレームワークのいずれかで使用できるドライバであり、それ自体のフレームワークではありません。Watir-webdriverとSeleniumは、同様の機能を持つ2つのものですが、実際のブラウザを駆動し、Capybaraを駆動するよりはるかに遅いです。Rack :: Test – DVG