[!NOTE] 아카이브된 프로젝트: Machinist는 2013년 이후 지원이 중단되었습니다. 최신 Ruby on Rails 테스트 픽스처로는 FactoryBot 사용을 권장합니다.
Machinist는 모델의 블루프린트를 정의하여 유효한 테스트 인스턴스를 즉석에서 생성할 수 있는 Ruby용 픽스처 대체 라이브러리입니다.
설치
Gemfile에 추가:
group :test do
gem 'machinist', '>= 2.0.0.beta2'
end
번들 및 설치 생성기 실행:
bundle install
rails generate machinist:install
블루프린트 정의
고유성을 보장하기 위해 일련 번호(sn)를 사용하여 기본 모델 속성 정의:
User.blueprint do
name { "User #{sn}" }
email { "user-#{sn}@example.com" }
end
# 이름이 지정된 변형 블루프린트
User.blueprint(:admin) do
name { "Admin #{sn}" }
admin { true }
end
테스트에서 객체 생성
# 저장 없이 메모리에서만 빌드
user = User.make
# 빌드 후 데이터베이스에 영속화
user = User.make!
# 블루프린트 속성 덮어쓰기
user = User.make!(name: "David")
# 이름이 지정된 블루프린트 사용
admin = User.make!(:admin)
연관 관계 (Associations)
Post.blueprint do
title { "Post #{sn}" }
author { User.make } # belongs_to 연관 관계
comments(3) # has_many 연관 관계 (3개 항목 생성)
author # 자동 감지하여 User.blueprint 호출
end