간단한 factory_girl 질문
-
20-09-2019 - |
문제
나는 두 개의 공장이있다 (post_factory.rb
, comment_factory.rb
) 별도의 파일로. 나는 약간 복잡한 공장을 만들고 싶습니다.이 댓글이 포함 된 게시물을 만들고 싶습니다. 나는 세 번째 파일을 만들었습니다 complex_factory.rb
, 다음 코드를 작성했습니다.
Factory.define :post_with_comments, :parent => :post do |post|
post.after_create { |p| Factory(:comment, :post => p) }
end
하지만 rake spec
파일이 Post and Comment 공장을 알지 못한다는 점에서 오류가 발생합니다. 바로 다음 순간에 나는 순진하게 썼다.
require "post_factory.rb"
require "comment_factory.rb"
그러나 그것은 적절한 결과를 얻지 못했습니다. 어쩌면 이것은 실제로 잘못된 방향을보아야합니까? 또는 그들은 거의 중요하지 않습니다 (가시성을 위해 공장을 등록하는 것이 내가 가정하는 것이 더 복잡 할 수 있기 때문에).
내가 뭔가를 놓치고 있습니까? 어떤 아이디어?
해결책
실제로 나는 공장이있는 파일이 서로를 본다는 것을 알아 냈습니다. 우리가있는 경우 comment_factory.rb
함께 post_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
다른 팁
적절한 경로 접두사가 없기 때문에 추가해야 할 필요가 작동하지 않습니다.
그러나 Factory_girl은 자동 으로이 작업을 수행해야합니다. 보다 git 저장소의 readme. 그것은 말한다 :
공장은 어디서나 정의 될 수 있지만 다음 위치의 파일에 정의되면 자동으로로드됩니다.
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