2011-01-06 12 views
25

私は、テストライブラリとしてRspec 2を使用するかなり最近のオープンソースアプリケーションを探しています。 経験豊富な開発者がライブラリを適切に利用して完全なスタックをテストする方法を知りたいのですが、私は自分自身の知識に関して絶えず疑念を抱いています(testunitから来ていますが、一部は最新のRspecリリース、それが絶えず改善されているにもかかわらず)。Rails:良いRspec2の使用例ですか? (また、キュウリ、ピクル、カピバラ)

プロジェクトでキュウリ、ピクル、カピバラをRspec 2と一緒に使用すると、私は喜んでジャンプしてくれます。

任意のポインタ?

乾杯!

答えて

53

私の2セント:

キュウリの代わりにステーキを使用してください。 RSpecはその核心にあり、シンプルであり、仕事をします。

https://github.com/cavalle/steak

カピバラあなたが別のドライバを使用可能にします。ドライバ - - 私はAkephalosの自分のフォークを使用

https://github.com/jeffkreeftmeijer/swinger

た:いくつかのドライバを使用すると、ウィンガーを使用してテストしている仕様に最適なドライバを使用してなど、JavaScriptをサポートしてより速く、ブラウザで実行し、遅く高速、サポートJavaScript、UTF-8(私のフォークが追加するものです)、外部ブラウザは必要ありません。

https://github.com/Nerian/akephalos2

RSpecのための良い練習は、 'コンテキスト' を使用することです。説明が必要かどうか私に尋ねてください。また、をメモしてください。メソッドを使用してください。ブロックが返すものを返します。これは、内部でオブジェクトを模倣し、それらをサンプル上で使用するのに便利です。 。

feature "Course" do 

    let(:school) {School.make!} 

    context "Loged in" do 
    before(:each) do 
     switch_to_subdomain(school) 
    end 

    context "In the new course form" do 
     before(:each) do 
     click_link("Courses") 
     click_link("New course") 
     end 

     scenario "New course" do    
     end 

     scenario "A Course without name should not be accepted" do 
     end 

     scenario "A new course should not be created if there is another one with the same name in the same school" do 
     end 
    end 
    end 
end 

また、ブック:RSpecの書籍、実用的なプログラマのは、RSpecの、カピバラ、キュウリ、すべてこのビヘイビア駆動開発アジャイルなもの:)

の背後にある中心的な概念についてのあなた自身を開始するための非常に良いリソースです

編集:

また、私はMachinist2をフィクスチャに使用します。 https://github.com/notahat/machinist

素晴らしいです。ファクトリーガールよりも良い。

Fabricatorもあり、優れたウェブサイトと非常に使いやすいDSLを持っています。

https://github.com/paulelliott/fabrication

あなたは、インテリジェントなデータを作成するために、偽造とマシニストを使用することができます。

https://github.com/sevenwire/forgery

School.blueprint do 
    name { "Pablo de olavide"} 
end 

Student.blueprint do 
    first_name { Forgery::Name.first_name} 
    last_name { Forgery::Name.last_name } 
    school { School.make! } 
end 

あなたは最終的に、ユーザがそれを見ると同じようにアプリケーションを表示するために、あなたの開発のデータベースを作成するために、トールタスクでこれを組み合わせることができます。また

http://relishapp.com/rspec

、このポストは、他の多くのヒントを与える:

http://eggsonbread.com/2010/03/28/my-rspec-best-practices-and-tips/

非常に良いアドバイスで別のポストを

def populate   
    require File.expand_path('config/environment.rb') 
    require File.expand_path('spec/support/blueprints.rb')   
    drop 
    puts "populating database" 
    1.times do |num| 
     school = School.make! 
     50.times do 
     Student.make!(:school => school) 

     end            
    5.times do   
     Course.make!(:school => school)   
     Professor.make!(:school => school)     
     end    
    end 
end 

RSpecの2のドキュメントには、多くの例があります:

テストの実行時間を最適化

:入力用

http://blog.leshill.org/blog/2011/10/23/fast-specs.html

http://jeffkreeftmeijer.com/2011/spec-helpers-bundler-setup-faster-rails-test-suites/

+0

おかげでたくさんの!私は現在工場ガールを使用していますが、私は機械工を近い将来試してみるかもしれないと思います。 – polarblau

+0

...私はステーキについて読んだことがありますが、それは自分の「スタイル」(ハ?)に近いと思われますが、キュウリを1つのフルプロジェクトで1回使用してより良い印象を受けたいと思います。私はRSpecの本も買うことを考えていましたが、ヒントのおかげで、私はちょうどそれのために行くかもしれないと思う!そして、私は間違いなく "文脈"を試みます。再度、感謝します。 - それにもかかわらず、誰かがオープンプロジェクトをしている人なら、私はそこで覗くことができますか? – polarblau

+1

あなたは、RSpec2のスペックがマスターによって行われているのを見るには、RSpec2 gitリポジトリそのものが本当に良い場所だと確信しています:Cucumber:https://github.com/dchelimsky/rspec/tree/master/featuresとRSpec; – Nerian

関連する問題