프로바이더 테스트 작성
Pact를 사용하여 GitLab 컨트랙트 프로바이더 테스트를 처음부터 작성하는 방법을 설명합니다.
이 튜토리얼은 프로바이더 테스트를 처음부터 작성하는 과정을 안내합니다. 이 튜토리얼은 컨슈머 테스트 튜토리얼 의 후속편입니다. 시작하기 위해, 프로바이더 테스트는 pact-ruby 를 사용하여 작성됩니다. 이 튜토리얼에서는 discussions.spec.js 가 생성한 컨트랙트를 처리하는 프로바이더 테스트를 작성합니다. Pact는 컨슈머 주도 테스트 도구이므로, 이 튜토리얼은 작업할 컨트랙트를 이미 생성한 기존 컨슈머 테스트가 있다고 가정합니다. 골격 생성 # 프로바이더 테스트는 매우 간단합니다. 목표는 테스트 데이터를 설정하고 해당 컨트랙트와 연결하는 것입니다. 먼저 spec/contracts/provider/pact_helpers/project/merge_request 아래에 get_discussions_helper.rb 라는 파일을 생성하세요. 파일 이름을 helpers 라고 지정한 것은 이 튜토리얼 끝에 설정하는 Rake 태스크에서 Pact가 파일을 호출하는 방식과 일치시키기 위해서입니다. 컨트랙트 테스트 디렉터리 구조에 대한 자세한 내용은 테스트 스위트 폴더 구조 를 참조하세요. service_provider 블록 # service_provider 블록은 프로바이더 테스트가 정의되는 곳입니다. 이 블록에 서비스 프로바이더에 대한 설명을 넣으세요. 컨슈머 테스트에서 파생된 컨트랙트에서 호출되는 것과 정확히 동일하게 이름을 지정하세요. require_relative '../../../spec_helper' module Provider module DiscussionsHelper Pact.service_provider 'GET discussions' do end end end honours_pact_with 블록 # honours_pact_with 블록은 이 프로바이더 테스트가 어떤 컨슈머를 대상으로 하는지 설명합니다. service_provider 블록과 마찬가지로, 컨슈머 테스트에서 파생된 컨트랙트에서 호출되는 것과 정확히 동일하게 이름을 지정하세요. require_relative '../../../spec_helper' module Provider module DiscussionsHelper Pact.service_provider 'GET discussions' do honours_pact_with 'MergeRequests#show' do end end end end 컨슈머와 프로바이더 이름 지정 방법에 대한 자세한 내용은 명명 규칙 을 참조하세요. 테스트 앱 구성 # 프로바이더 테스트가 컨트랙트를 검증하려면 실제 요청을 수행하고 컨트랙트와 비교할 응답을 반환하는 테스트 앱에 연결해야 합니다. 이를 위해 테스트에서 사용할 app 을 spec/contracts/provider/environments/test.rb 에 정의된 Environment::Test.app 으로 구성하세요. require_relative '../../../spec_helper' module Provider module DiscussionsHelper Pac