2014-05-17 3 views
6

나는 Factory Girl과 상당히 간단해야한다고 생각하는 것을 시도하고 있습니다. 사용자는 여러 가지 이야기를 가지고 있으며 사용자가 만든 이야기를 나열하는 사용자의 프로필 페이지를 테스트하고 있습니다.공장 아가씨 : 관련 레코드 만들기

나는 관련 공장을 만들고 고개를 워드 프로세서 내가 이런 걸 할 수있는 말 :

FactoryGirl.define do 

    factory :story do 
    title "My Story" 
    segments_limit 5 
    beginning "Once upon a time" 
    completion_status false 
    user 
    end 

    factory :user do 
    sequence(:username) { |n| "user-#{n}" } 
    sequence(:email) { |n| "user-#{n}@example.com" } 
    password "password" 
    password_confirmation "password" 

    factory :user_with_stories do 
     ignore do 
     stories_count 5 
     end 

     after(:create) do |user, evaluator| 
     create_list(:story, evaluator.stories_count, user: user) 
     end 
    end 
    end 
end 

것은이 그래도 제대로 작동하지 않습니다 - 나는 콘솔에 들어가서 FactoryGirl.create(:user_with_stories).stories.length을 실행할 때, 내가 얻을 빈 배열. 내가 놓친 게 있니?

답변

4

당신이 after :build 사용 build_list 및과 같이, 사용자의 협회에 목록을 지정해야합니다 :

after(:build) do |user, evaluator| 
    user.stories << build_list(:story, evaluator.stories_count, user: user) 
end 
1

스토리는 사용자의 생성 후 추가, 당신은 창조가 부착 된 이야기를보고 한 후 사용자를 인스턴스화해야합니다

user = FactoryGirl.create(:user_with_stories) 
user = User.find user 
user.stories.length