2

したがって、次のようなモデル仕様があります。

describe 'something' do
  it 'another thing' do
    a_model = FactoryGirl.create(:a_model)
    another = FactoryGirl.create(:another)
    #some code using a_model and another 
  end
end

次に、次の別のモデル仕様があります。

describe 'something else' do
  it 'another test' do
    a_model = FactoryGirl.create(:a_model)
    another = FactoryGirl.create(:another)
    #different code using a_model and another 
  end
end

私の質問は、これをどのように乾燥させるのですか? 共有コンテキストを確認しましたが、モデルにアクセスできません。ヘルパー メソッドを作成し、オブジェクトの配列/ハッシュを返すこともできますが、これをエレガントな方法で行うには何かを組み込む必要があるようです。

4

2 に答える 2

5

共有コンテキストをチェックアウト:

https://www.relishapp.com/rspec/rspec-core/docs/example-groups/shared-context

# /spec/support/shared_stuff.rb

shared_context "shared stuff" do
  let(:model_1) { FactoryGirl.create(:model_1) }
  let(:model_2) { FactoryGirl.create(:model_2) }
end

次に、仕様で:

describe "group that includes a shared context using 'include_context'" do
  include_context "shared stuff"

  # ...
end
于 2013-03-12T20:36:38.863 に答える
0

1 つのオプションは、FactoryGirl のコールバック機能を使用することです。

あなたのテストでは、次のようなことをするかもしれません

describe 'something else' do
  it 'another test' do
    a_model = FactoryGirl.create(:a_model_with_another)
    #different code using a_model and another 
  end
end

Factory の定義は次のようになります。

FactoryGirl.define do
  factory :a_model do

    factory :a_model_with_another do
      after(:create) {FactoryGirl.create(:another)}
    end
  end
end

ドキュメントで詳細を確認できます

于 2013-03-12T20:33:49.150 に答える