공장 봇(레일 테스트)
Factory Bot (Rails Testing)Factory Bot은 원래 Factory [1]Girl로 알려진 Ruby 프로그래밍 언어용 소프트웨어 라이브러리로 자동화된 소프트웨어 테스트를 위한 테스트 고정 장치를 만드는 공장 방법을 제공합니다.고정 장치 객체는 사전 정의된 상태의 일반 Ruby 객체, 기존 데이터베이스 레코드가 있는 ORM 객체 또는 모의 객체일 수 있습니다.
Factory Bot은 종종 Ruby on Rails 응용 프로그램을 테스트하는 데 사용되며, 여기서 Rails의 내장 고정 장치 메커니즘을 대체합니다.레일즈의 기본 설정에서는 사전 입력된 데이터베이스를 테스트 고정 장치로 사용하며, 이는 전체 테스트 제품군에 대해 전역적입니다.반면에, Factory Bot은 개발자들이 각 테스트에 대해 다른 설정을 정의할 수 있게 해주기 때문에 테스트 [2][3]제품군 내에서 종속성을 피할 수 있습니다.
공장
공장 정의
팩토리는 이름과 속성 집합으로 정의됩니다.테스트 개체의 클래스는 공장 이름을 통해 결정되거나 [4]명시적으로 설정됩니다.
팩토리봇.정의를 내리다 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 자동으로 클래스 결정 공장 :사용자 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 이름. { "미니언 선장" } 슈퍼히어로 { 거짓의 } 끝. 클래스를 명시적으로 지정 공장 :filename, 학급: 사용자 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 이름. { 토니 스타크 } 슈퍼히어로 { 진실의 } 끝. 끝. 특징들
특성들
특성을 통해 모든 [4][5]공장에 적용할 수 있는 특성을 그룹화할 수 있습니다.
공장 :상태 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 제목 { "풀타임 일자리 찾기" } 특성 : 인터내셔널 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 국제 { 진실의 } 끝. 특성 : 거주자 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 국제 { 거짓의 } 끝. 특성 :comp_module 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 comp_message { 진실의 } 끝. 특성 :전기 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 comp_message { 거짓의 } 끝. 공장 :comp_modules_international_modules, 특성들: [: 인터내셔널, :comp_module] 공장 :전기_주민_케이블, 특성들: [: 거주자, :전기] 끝. 별칭
Factory Bot을 [4]사용하면 공장을 재사용할 수 있도록 기존 공장의 별칭을 만들 수 있습니다.
공장 :사용자, 가명: [:filename, :선생님] 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 이름 { "존" } 끝. 공장 :filename 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 선생님. 별칭이 ''사용자''에 ''teacher''를 사용함 제목 { "업무 시간" } 끝. 공장 :알림 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 학생입니다 #Alias 사용자 학생 사용 제목 { "강의 시간" } 끝. 시퀀스
Factory Bot을 사용하면 지정된 [4]형식의 테스트 속성에 대한 고유 값을 만들 수 있습니다.
팩토리봇.정의를 내리다 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 공장 :filename 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 순서(:이름) { n "제목#{n}" } 제목 1, 제목 2 등... 끝. 끝. 상속
클래스에 대한 공장을 만드는 동안 공장을 상속할 수 있습니다.이를 통해 사용자는 상위 공장의 공통 특성을 재사용하고 중복 특성에 대한 중복 코드를 작성하지 않아도 됩니다.상속을 활용하기 위해 중첩된 방식으로 공장을 작성할 수 있습니다.
공장 :사용자 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 이름. { "미힐" } 공장 :admin 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 admin_rights 진실의 끝. 끝. admin_user = 만들다(:admin) admin_user.이름. 마이클 admin_user.admin_rights 참의 상위 공장도 명시적으로 지정할 수 있습니다.
공장 :사용자 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 이름. { "미힐" } 끝. 공장 :admin, 부모: :사용자 하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다 admin_user { 진실의 } 끝. 콜백
Factory Bot을 사용하면 다음과 같은 [4]4가지 단계에서 사용자 정의 코드를 주입할 수 있습니다.
after(:build)- 공장 구축 후 코드 주입 가능
before(:create)- 공장 저장 전 코드 주입 가능
after(:create)- 공장 저장 후 코드 주입 가능
after(:stub)- 공장 스텁 전에 코드를 주입할 수 있습니다.
참고 항목
Ruby용 기타 테스트 라이브러리
- NullDB: 데이터베이스 사용을 방지하여 테스트 속도를 높이는 방법입니다.
- Fixture Builder: 테스트 실행 전에 Ruby 공장을 Fixture로 컴파일하는 도구입니다.
- Shoulda: 추가 도우미, 매크로 및 어설션이 포함된 테스트/유닛의 확장입니다.
- Rspec: 행동 중심 개발 프레임워크
- Capybara:웹 응용 프로그램에 대한 수락 테스트 프레임워크입니다.
레퍼런스
- ^ "Project Naming History". github.com/thoughtbot/factory_bot.
- ^ "Waiting For a FactoryGirl". Thoughtbot Blog.
- ^ "Rails Testing". hiringthing.com.
- ^ a b c d e "Getting Started". rubydoc.info/gems/factory_bot.
- ^ "Traits". Thoughtbot Blog.