2013-08-03 4 views
0

나는이 폴더 구조가 있습니다형질 - - RSpec에 공장 소녀

. 
    spec 
    factories 
     category.rb 
     service.rb 

을하지만 서비스의 범주를 호출 할 때 category.rbservice.rb 전에로드되지 않기 때문에, 나는 Trait not registered 오류가 발생합니다. 각 이후, 나는 각 파일의 각 파일을 여러 번에 require_relative해야하기 때문에이 작업을 수행 할 수있는 간단한 방법이있다,

require_relative 'category' 

가 작동합니다 :

나는 서비스에이를 작성하는 가정 모델에는 많은 연관이 있습니다. 에서

require_relative 'category' 

FactoryGirl.define do 
    factory :service do 
    category 
    end 
end 

결과 : 나는 내 마지막 단락에서 언급 한 일을 할 수 없습니다

업데이트도에서 더 나은 방법입니다

Factory already registered: category (FactoryGirl::DuplicateDefinitionError) 

+0

서로 내에서 참조하는 팩토리가 완벽하기 때문에 일부 코드를 표시해야합니다. – sevenseacat

+0

흠, 내 문제는 공장을 참조하지 않습니다. 업데이트하겠습니다. – juanpastas

+1

'require_relative 'category'는 필요하지 않습니다. 왜 그걸하려는거야? – sevenseacat

답변

0

내 질문에 언급되지 않았으므로이 질문에 대한 답을 추론 할 수 없으므로 게시를 완료하십시오.

문제점 zeus 서버를 사용하고 있는데 제우스 서버를 다시 시작했는데 문제가 발생했습니다.

-1

솔루션을, 내 의견은 별도의 공장 대신 모든 공장을 하나의 파일에 담는 것입니다.

사실 공장이 너무 많지 않으면 실제로 너무 많은 공장 파일이 필요하지 않습니다.

모든 정의를 spec/factories.rb으로 옮긴 다음 디렉터리와 파일 spec/factories을 제거하십시오.

+0

모범 사례는 제쳐두고, 하나의'factories.rb' 파일에있는 모든 팩토리 정의를 갖는 것이'factories' 아래에있는 개별 파일에있는 것과는 다른 결과를 산출한다고 믿을만한 이유가 있습니까? –

+0

@PeterAlfvin,'require '와 factory dependency를 더 이상 고려할 필요가 없다는 것을 제외하고는 차이가 없습니다. 나는 이것이 간단하고 디버깅하기 쉽다고 생각한다. –

+2

정의가 개별 파일에있을 때 종속성 고려 사항에 차이가 있다고 생각합니까?FactoryGirl이 시작될 때 모든 팩토리 파일이 한 번에로드되고 모든 파일이로드 될 때까지 포함 된 블록 (팩토리 간 참조 포함)에 대한 평가가 수행되지 않습니다. 즉, 도입 된 종속성 고려 사항에 차이가 없음을 의미합니다 정의가 여러 파일에 분산되는 방식으로 –

관련 문제