2011-07-09 8 views

答えて

3

通常、テストは互いに独立している必要があります;あなたのテストの多くが同じことをする必要がある場合、それは彼らがいくつかの仕事を複製していることを示唆しています。しかし、それは避けられないこともあります。たとえば、認証されたものをテストするために、ログインしているユーザーを手軽にする必要があることがよくあります。

特にRubyテストの場合、誰かがあなたが望む特定の問題を解決するために既にライブラリを作成している可能性が非常に高いです。たとえば、操作が適切にテストされる前にいくつかのデータが必要であることが非常に一般的です。そのため、factory_girlが存在します。

ユーザーが実際に行うすべての手順を実行する動作駆動型統合テストを実行する場合は、代わりにCucumberを使用する必要があります。

あなたが別の場所間でメソッドを再利用する場合は、あなたがspec/supportで共有コードを置くことができます。

# spec/support/consumable_helper.rb 
module ConsumableHelper 
    def consume(consumable) 
    calories = consumable.om_nom_nom 
    end 
end 

RSpec.configure do |config| 
    config.include ConsumableHelper 
end 

をあなたは、複数の地域で同じ動作をテスト使用したい場合はshared_examples_forit_behaves_like

shared_examples_for "a Consumable" do 
    it "should be delicious" do 
    subject.should be_delicious 
    end 

    it "should provide nutrition" do 
    subject.calories.should > 0 
    end 
end 

describe Fruit do 
    it_behaves_like "a Consumable" 
end 

describe Meat do 
    it_behaves_like "a Consumable" 
end 
+0

右、+1、docここに:http://rspec.info/documentation/ – apneadiving

+0

無関係の副メモ。私は不定な記事を使用することを好む... 'shared_examples_for" Consumable "と' it_behaves_like "Consumable"。私はちょうどDSLがより良く読むことを見つける:) – d11wtq

関連する問題