121

Railsの開発経験は6か月あります。認証と承認およびpostgresqlデータベースで現在使用されているWebアプリケーションを構築しました。

2番目のRailsアプリケーションに移りますが、今回は、レッスンを学んだ後、TDDを使用して開発したいと思います。これは、スケーリングとバグ修正がはるかに簡単であることに気付いたためです。開発は遅いですが、長期的には対処がはるかに簡単です。

RspecとCucumberについて聞いたことがありますが、完全に混乱しています。

RSpecとCucumberの違いと、それらが何に使用されているのかを知りたいです。

初心者(唯一の開発者でもある)の観点から、テストフレームワークが本当に必要かどうかを知ることも役立ちます。

4

1 に答える 1

341

RSpecとCucumberはどちらもテストフレームワークです。RSpecには、従来の単体テストが含まれています(つまり、アプリケーションのクラスまたは一部をアプリケーションの残りの部分から分離してテストします。したがって、モデルはモデルが実行するはずのことを実行し、コントローラーは実行するはずのことを実行します)。

RSpecとCucumberはどちらも受け入れテストに使用されます(ATDD、BDD、例による仕様などと呼ばれます)。これらはビジネスケース主導の統合テストです。つまり、ユーザーがアプリケーションを使用し、完全なRailsスタックを使用する方法をシミュレートするため、アプリケーションのさまざまな部分が連携する方法の問題を、単体テストでは検出できない方法で見つけることができます。探す。

RSpecとCucumberの主な違いは、ビジネスの読みやすさの要素です。Cucumberの主な魅力は、仕様(機能)がテストコードとは別のものであるため、製品の所有者はコードを掘り下げることなく仕様を提供または確認できることです。これらは、Cucumberで作成する.featureファイルです。RSpecにも同様のメカニズムがありますが、代わりに、ビジネス仕様を含むDescribe、Context、またはItブロックを使用してステップを記述し、そのステートメントを実行するコードをすぐに取得します。このアプローチは、開発者にとっては少し簡単ですが、技術者以外の人にとっては少し難しいです。

どちらを使用しますか?あなたが唯一の開発者であり製品所有者である場合、私はRSpecに固執します。技術者にとって理解しやすく、スコープを設定して制御する上でいくつかの利点があり、テストのためにRegExsをいじらないようにすることができます。ステップ。クライアント向けにこれを構築していて、仕様に関して実践的なものである場合は、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

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を使い始めるのに最適です。

于 2012-08-01T15:37:35.010 に答える