FactoryGirl을 사용하여 테스트를 작성하려고하며 입력 매개 변수를 기반으로 생성 된 클래스에 대한 팩터 리를 생성하려고합니다. MyTable.create_subclass
이 인수를 사용하여 구축 MyTable
의 서브 클래스를 반환초기 정의 후 FactoryGirl 팩터 리 추가
setup do
FactoryGirl.define do
factory :my_table_1, :class => MyTable.create_subclass(1) do
my_table_traits
end
end
end
(당신이 생각 하듯이, MyTable
는, ActiveRecord
클래스) : 그래서 내 setup
블록에서 나는 이런 식으로 뭔가를 시도했다.
하지만 작동하지 않습니다. 내가 FactoryGirl.find_definitions
에 대한 호출을 추가했지만 중복 정의 오류가 발생했습니다. 또한 define
을 modify
으로 변경하려고 시도했지만 공장을 추가 할 수없는 것 같습니다. 기존 팩을 수정하는 것만 가능합니다.
테스트를 실행할 때 어떻게 팩터 리를 추가 할 수 있습니까? 아니면 테스트가 실행될 때까지 존재하지도 않는 동적으로 생성 된 클래스에 대해이 팩토리를 설정하는 다른 방법이 있습니까?
상황 :
MyTable
최종 테이블로 데이터를로드되는 것입니다. 처리하는 동안, 실제 테이블에로드되기 전에 데이터를로드하기 위해 임시 테이블을 작성하여 준비합니다. 이러한 임시 테이블은 인수에 따라 동적으로 생성되는 서브 클래스 MyTable
으로 표시됩니다. 이 테스트의 목적은 서브 클래스/임시 테이블에서 스테이지를 완료 한 후에 데이터를 MyTable
에 올바르게 삽입했는지 확인하는 것입니다.
FactoryGirl을 사용하여 다른 것들에 대한 테스트 데이터를 작성 했으므로이 테스트에서 임시 테이블에 대한 테스트 데이터를 작성하는 데 자연스러운 확장이 필요합니다.
테스트 중에 새 팩토리 정의를 작성하려는 이유가 무엇입니까? 그것은 다소 공장의 목적에 어긋납니다. 정말로 이것을하고 싶다면 다른 클래스의 인스턴스를 만들거나 빌드 할 수있는 도우미 메서드를 사용하는 것이 좋습니다 ... – jurglic
왜 내가이 작업을 수행하려고하는지 설명하기 위해이 컨텍스트에 대해 뭔가를 추가했습니다. 나는 그것이 공장을위한 일반적인 유스 케이스가 아니라는 것을 깨닫는다. –