25

テストライブラリとしてRspec2を使用するかなり最近のオープンソースアプリケーションを探しています。経験豊富な開発者がライブラリを適切に利用してフルスタックをテストする方法を確認したいと思います。自分の知識について常に疑問があるためです(テストユニットからのものであり、最新のRspecリリースのドキュメントがかなり少ないためです。常に改善されていますが)。

プロジェクトでキュウリ、ピクルス、カピバラをRspec 2と一緒に使用する場合は、私が喜びのためにジャンプすることになります。

ポインタはありますか?

乾杯!

4

1 に答える 1

54

私の2セント:

きゅうりの代わりにステーキを使用してください。それはそのコアでRSpecであり、それは単純であり、それは仕事をします。

https://github.com/cavalle/steak

カピバラでは、さまざまなドライバーを使用できます。一部のドライバーはjavascriptをサポートし、ブラウザーで実行され、高速、低速などです。Swingerを使用してテストしている仕様に最適なドライバーを使用してください。

https://github.com/jeffkreeftmeijer/swinger

私はAkephalosの独自のフォーク(ドライバー)を使用しています。これは高速で、javascript、UTF-8(私のフォークが追加するもの)をサポートし、外部ブラウザーを必要としません。

https://github.com/Nerian/akephalos2

RSpecの良い習慣は、「コンテキスト」を使用することです。説明が必要かどうか私に尋ねてください。また、letメソッドにも注意してください。ブロックが返すものは何でも返します。内部のオブジェクトをモックとして宣言し、サンプルで使用する場合に便利です。。

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   

また、本:PragmaticProgrammersのRSpecBookは、RSpec、Capybara、Cucumber、およびこのすべてのビヘイビア駆動開発のアジャイルの背後にあるコアコンセプトについて自分自身を始めるための非常に優れたリソースです:)

編集:

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

よく働く。ファクトリーガールよりも優れています。

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

https://github.com/paulelliott/fabrication

MachinistとForgeryを使用して、インテリジェントなデータを作成できます。

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

これをThorタスクと組み合わせて、開発データベースにデータを入力し、最終ユーザーに表示されるようにアプリケーションを表示できます。

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

RSpec2のドキュメントには多くの例があります。

http://relishapp.com/rspec

また、この投稿は他の多くのヒントを提供します:

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

非常に良いアドバイスのある別の投稿:

http://flux88.com/2011/05/dry-up-your-rspec-files-with-subject-let-blocks/

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

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

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

于 2011-01-06T18:31:29.243 に答える