정의와 변형
같은 클래스에 대해 여러 팩터리를 정의하고 상속으로 공통 구성을 재사용할 수 있다. 기본 상태와 다른 역할이나 속성을 시험마다 구성하는 데 쓰인다. 객체를 만드는 코드가 여러 시험에 흩어지는 대신 생성 규칙을 한곳에서 관리할 수 있다.
객체와 속성 해시
build는 저장하지 않은 인스턴스를, create는 저장된 인스턴스를 만드는 전략이다. attributes_for는 객체 대신 속성 해시를 제공한다. 시험 대상이 생성자 입력인지 저장된 모델인지에 따라 필요한 결과 형태를 선택한다.
스텁과 연동
build_stubbed는 정의한 속성을 가진 스텁 객체를 구성한다. 실제로 저장한 객체와 동작이 같다고 가정해서는 안 되며 직렬화 등에도 제약이 있다. Rails 연동은 별도의 factory_bot_rails를 통해 제공되므로 핵심 라이브러리와 연동 패키지를 구분한다.