私の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/