2010-03-16 1 views
2

두 개의 공장 (post_factory.rb, comment_factory.rb)이 별도의 파일에 있습니다. 조금 복잡한 공장을 만들고 싶습니다.이 공장은 나와 관련된 의견이있는 게시물을 만듭니다. 나는 complex_factory.rb라는 세 번째 파일을 생성하고 다음 코드를 작성 : 파일이 포스트와 코멘트 공장의 인식하지 못하는 것을 주장,간단한 factory_girl 질문

Factory.define :post_with_comments, :parent => :post do |post| 
    post.after_create { |p| Factory(:comment, :post => p) } 
end 

그러나 rake spec이 오류가 발생합니다. 바로 다음 순간에 필자는 꼭대기에서 요구 사항을 썼다 :

require "post_factory.rb" 
require "comment_factory.rb" 

그러나 이것은 적절한 결과를주지 못했다. 아마 이것은 실제로 잘못된 방향을 찾고있을 필요가 있을까요? 또는 그들은 꽤 많이 중요하지 않습니다. (가시성을위한 공장을 등록하는 것이 내가 생각하기에 더 복잡 할 수도 있습니다).

내가 누락 된 항목이 있습니까? 어떤 아이디어?

+1

실제 해결책은 아니지만이 모든 것을 하나의 파일에 담는 것은 어떻습니까? –

+0

밀라노 (Milan)가 제안 하듯이 하나의 파일에 넣으십시오. – Nick

+0

'require File.dirname (__ FILE__) + "/post_factory.rb"'? –

답변

3

사실 나는 공장에서 서로 파일을 볼 수 있다는 것을 알아 냈습니다. 우리가 post_factory.rb와 나란히 comment_factory.rb있는 경우이 다음 코드는 미세 (포스트 공장)를 작동합니다

Factory.define :post_with_comments do |post| 
    post.caption = "Caption" 
    post.body "Some dummy text" 
    post.after_create { |p| Factory(:comment, :post => p) } 
end 

comment_factory.rb는 다음과 같은 보이지만 :

Factory.define :comment do |comment| 
    comment.body "Some wise comment text" 
    comment.post_id 
end 
0

을 당신이 그것을하기 때문에 작동하지 않습니다 추가 필요 올바른 경로 접두사가 없습니다.

그러나 factory_girl이 자동으로이 작업을 수행해야합니다. the README in the git repository을 참조하십시오. 그것은 말한다 :

공장 중 하나를 어디서나 정의 할 수 있지만,이 파일에 정의 된 경우 자동으로 다음 위치에서로드됩니다 : 당신은 기본 위치 외부에서 공장을 가지고 있어야합니다

test/factories.rb 
spec/factories.rb 
test/factories/*.rb 
spec/factories/*.rb 

. 기본값으로 이동할 수 없다면 다음과 같이 사용하십시오 :

Dir[File.expand_path(File.dirname(__FILE__)) + "/factories/*.rb"].each do |file| 
    require file 
end