GitLab QA의 리소스 클래스
GitLab QA 테스트에서 리소스 클래스를 올바르게 구현하고, API 구현을 정의하며, 테스트 내에서 리소스를 생성하는 방법을 설명합니다.
리소스는 주로 브라우저 UI 단계를 사용하여 생성되지만, API 또는 CLI를 통해 생성할 수도 있습니다. 리소스 클래스를 올바르게 구현하는 방법 # 모든 리소스 클래스는 Resource::Base 를 상속해야 합니다. 리소스 클래스를 정의하기 위해 반드시 구현해야 하는 메서드는 단 하나입니다. 바로 #fabricate! 메서드로, 브라우저 UI를 통해 리소스를 빌드하는 데 사용됩니다. 이 메서드에서 웹 페이지와 상호작용할 때는 페이지 객체 만 사용해야 합니다. 다음은 가상의 예시입니다: module QA module Resource class Shirt < Base attr_accessor :name def fabricate! Page::Dashboard::Index.perform do |dashboard_index| dashboard_index.go_to_new_shirt end Page::Shirt::New.perform do |shirt_new| shirt_new.set_name(name) shirt_new.create_shirt! end end end end end API 구현 정의 # 리소스 클래스는 공개 GitLab API를 통해 리소스를 생성할 수 있도록 다음 세 가지 메서드를 추가로 구현할 수 있습니다: #api_get_path : 기존 리소스를 가져오는 GET 경로. #api_post_path : 새 리소스를 생성하는 POST 경로. #api_post_body : 새 리소스를 생성하는 POST 본문(Ruby 해시 형태). 많은 API 리소스는 페이지네이션 을 적용한다는 점에 유의하세요. 원하는 결과를 찾지 못한다면 결과가 여러 페이지에 걸쳐 있는지 확인하세요. Shirt 리소스 클래스에 세 가지 API 메서드를 추가해 보겠습니다: module QA module Resource class Shirt < Base attr_accessor :name def fabricate! # ... same as before end def api_get_path "/shirt/#{name}" end def api_post_path "/shirts" end def api_post_body { name: name } end end end end Project 리소스는 브라우저 UI와 API 구현의 좋은 실제 예시입니다. 리소스 속성 # 리소스는 다른 리소스가 먼저 존재해야 할 수 있습니다. 예를 들어, 프로젝트는 생성될 그룹이 필요합니다. 리소스 속성을 정의하려면 다른 리소스 클래스를 사용하는 블록과 함께 attribute 메서드를 사용하여 리소스를 생성(fabricate)할 수 있습니다. 이를 통해 리소스 객체의 메서드에서 다른 리소스에 접근할 수 있습니다. 일반적으로 #fabricate! , #api_get_path , #api_post_path , #api_post_body 에서 사용합니다. Shirt 리소스 클래스에 project 속성을 추가해 보겠습니다: module QA module Resource class S