2013-01-16 4 views
2

Ruby를 처음 사용하는 경우, 분명히 알 수 있습니다. 나는 이미 herehere으로 보았다. 로딩 중입니다. factory_girl_rails 괜찮습니다.FactoryGirl - 공장 등록되지 않았습니다.

나는 구문 오류가 있어야한다고 생각했지만 머리를 긁는 한 시간이 지나면 실제로 고칠 수 없었다. 누군가 제발 도와 줄 수 있니? :) 여기

내 공장 :

require 'Faker' 

FactoryGirl.define do 

    factory :user do 
    name { Faker::Name.name } 
    email { Faker::Internet.email } 
    password { Faker::Lorem.characters 12 } 
    end 

    trait :with_teams do 
    ignore do 
     number_of_teams 5 
    end 

    after :create do |user, evaluator| 
     FactoryGirl.create_list :team, evaluator.number_of_teams, :user => user 
    end 
    end 

end 

그리고 여기에 관련 사양입니다 :

require 'spec_helper' 

describe User do 
    # This works fine 
    it "can create a team" do 
    user = FactoryGirl.create :user 
    team = user.teams.create 

    team.class.should == Team 
    end 

    # The marked line throws argument error 
    it "can have many teams" do 
    user = FactoryGirl.create :user, :with_teams, :number_of_teams => 10 # <--- 
    user.teams.length.should == 10 
    end 
end 

그리고 이것은 내가 사양 실행지고있어 오류입니다 :

Failures: 

     1) User can have many teams 
     Failure/Error: user = FactoryGirl.create :user, :with_teams, :number_of_teams => 10 
     ArgumentError: 
      Factory not registered: User 
     # ./spec/factories/users.rb:19:in `block (3 levels) in <top (required)>' 
     # ./spec/models/user_spec.rb:34:in `block (2 levels) in <top (required)>' 

고맙습니다.

답변

3

특성은 공장 내에 있어야합니다. 귀하의 코드에서 :user 공장과 :with_teams 형질은 관련이 없습니다.

require 'Faker' 

FactoryGirl.define do 

    factory :user do 
    name { Faker::Name.name } 
    email { Faker::Internet.email } 
    password { Faker::Lorem.characters 12 } 

    trait :with_teams do 
     ignore do 
     number_of_teams 5 
     end 

     after :create do |user, evaluator| 
     FactoryGirl.create_list :team, evaluator.number_of_teams, :user => user 
     end 
    end 
    end 
end 
+0

흠. 나는 '특성을 찾을 수 없다.'라는 오류를 얻지는 못했지만 그럴 것이라고 생각한다. . 나는 곧 그것을 시험해 볼 것이다. :) –

+0

글쎄, 당신은 그 특정 줄에': user'를 사용하려고합니다. 그 결과에 대해 알려주십시오. –

+0

네, 여전히 랩탑에 rvm을 설치하고 있습니다. 하하하 –

2
require 'factory_girl_rails' 
FactoryGirl.factories.clear 

이렇게하면 문제가 해결 될 수 있습니다.

+0

전에, 내가 포함 오류의 부하를 얻을 시도'공장이 이미 등록 :' –

+0

는 'factory_girl_rails' FactoryGirl.factories.clear –

+0

흠 그래서 내가 spec_helper 바로 사람들을 넣을 필요? –

0

내가 볼 문제는 당신이 teams라는 공장이 없다는 것입니다.

require 'Faker' 
FactoryGirl.define do 

    factory :user do 
    team 
    #.... your code here 
    end 

    factory :team do 
    #... more code here as necessary 
    end 
end 
+1

안녕하세요, vlasits, 고마워요.하지만 저는 팀이라는 공장을 가지고 있었고, 미안하다고 말한 것을 잊었습니다! –

관련 문제