RSpecとCucumberはどちらもテストフレームワークです。RSpecには、従来の単体テストが含まれます(つまり、アプリケーションのクラスまたは一部をアプリケーションの他の部分から分離してテストします。したがって、モデルはモデルが実行するはずのことを実行し、コントローラーは実行することを実行します)。
RSpecとCucumberの両方が受け入れテストに使用されます(これは、ATDD、BDD、仕様による仕様などと呼ばれます)。これらはビジネスケース主導の統合テストです。つまり、ユーザーがアプリケーションを使用する方法と完全なRailsスタックを使用する方法をシミュレートするため、アプリケーションのさまざまな部分が連携する方法に関する問題を、ユニットテストでは検出できません。見つける。
RSpecとCucumberの主な違いは、ビジネスの読みやすさの要素です。Cucumberの主な利点は、仕様(機能)がテストコードから分離されているため、製品の所有者がコードを掘り下げることなく仕様を提供または確認できることです。これらは、Cucumberで作成する.featureファイルです。RSpecにも同様のメカニズムがありますが、代わりに、ビジネス仕様を含むDescribe、Context、またはItブロックでステップを記述し、すぐにそのステートメントを実行するコードを記述します。このアプローチは、開発者にとっては扱いが少し簡単ですが、技術者以外の人にとっては少し難しいものです。
どちらを使用しますか?あなたが唯一の開発者であり製品の所有者である場合、私はRSpecにこだわります。技術者にとっては理解しやすいと思います。対象範囲を限定して管理する上でいくつかの利点を提供し、テストのためにRegExをいじらないようにしますステップ。これをクライアント用に構築していて、それらが仕様に関して実践的である場合、受け入れテストにはCucumberを使用し、単体テストには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
Rスペック
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を使い始めるのに優れています。