0

テストを実行すると、次のエラー メッセージが表示されます。私のレクチャースペックに問題があり、トップが必要とのことです。これが私の spec_helper.rb ファイルを要求することと関係があるかどうかはわかりません。

  1) Lecture has a valid factory
     Failure/Error: FactoryGirl.create(:lecture).should be_valid
     NoMethodError:
       undefined method `after_build=' for #<Lecture:0x007fe7747bce70>
     # ./spec/models/lecture_spec.rb:21:in `block (2 levels) in <top (required)>'

私の工場は次のようになります。

require 'faker'

FactoryGirl.define do   
  factory :question do      
    association :lecture        
    name { Faker::Lorem.words(1) }

    description {Faker::Lorem.words(7)}

    factory :question_one do
      answer 1
    end

    factory :question_two do
      answer 2
    end

    factory :question_three do
      answer 3
    end
  end
end

これが私の Lecture_spec ファイルです

require 'spec_helper'

describe Lecture do     
  it "has a valid factory" do
    FactoryGirl.create(:lecture).should be_valid    
  end
end

これが私のレクチャー ファクトリーで、ここでレクチャー ファクトリーを定義しました。

FactoryGirl.define do
    factory :lecture do
        #association :question
        name        {Faker::Lorem.words(1)}
        description {Faker::Lorem.words(7)}
        soundfile_file_name {Faker::Lorem.words(1)}
        soundfile_content_type {Faker::Lorem.words(3)}
        soundfile_file_size     {Faker::Lorem.words(8)}

        after_build do |question|
            [:question_one, :question_two, :question_three].each do |question|
                association :questions, factory: :question, strategy: :build
            end
        end
    end
end
4

2 に答える 2

0

問題は、講義を定義する工場がないことだと思います。講義を作成しようとしていますが、ファクトリを定義していません。

講義用のファクトリを追加すると、問題が解決するはずです。工場フォルダの下にある独自のlectures.rbファイルでそれを行います。

あなたは次のことができます

FactoryGirl.define do 
  factory :lecture do
   #some attributes here
  end
end

それはあなたの問題を解決するはずです。

于 2012-12-01T22:02:27.050 に答える
0

FactoryGirl はafterライフサイクル フック パラメーターを持つメソッドを使用してコールバックを指定するため、コードは次のようになります。

after(:build) do |question|
    [:question_one, :question_two, :question_three].each do |question|
        association :questions, factory: :question, strategy: :build
    end
end

詳細については、readme のコールバックのセクションを参照してください。

于 2012-12-01T23:33:44.193 に答える