InfoGrab DocsInfoGrab Docs

컨슈머 테스트 작성

jest-pact와 pact-js를 사용하여 GitLab REST API 엔드포인트에 대한 컨슈머 계약 테스트를 처음부터 작성하는 방법을 설명합니다.

이 튜토리얼은 컨슈머 테스트를 처음부터 작성하는 과정을 안내합니다. 컨슈머 테스트는 pact-js 를 기반으로 하는 jest-pact 를 사용하여 작성합니다. 이 튜토리얼에서는 MergeRequests#show 페이지에서 호출되는 /discussions.json REST API 엔드포인트( /:namespace_name/:project_name/-/merge_requests/:id/discussions.json )에 대한 컨슈머 테스트를 작성하는 방법을 보여줍니다. GraphQL 컨슈머 테스트 예시는 spec/contracts/consumer/specs/project/pipelines/show.spec.js 를 참고하세요. 스켈레톤 생성 # 컨슈머 테스트의 스켈레톤을 먼저 작성합니다. 이 테스트는 MergeRequests#show 페이지의 요청에 대한 것이므로, spec/contracts/consumer/specs/project/merge_requests 아래에 show.spec.js 라는 파일을 생성합니다. 그런 다음, 아래 함수와 파라미터로 파일을 채웁니다: pactWith PactOptions PactFn 계약 테스트 디렉터리 구조에 대한 자세한 내용은 테스트 스위트 폴더 구조 를 참고하세요. pactWith 함수 # Pact 컨슈머 테스트는 PactOptions 와 PactFn 을 받는 pactWith 함수를 통해 정의합니다. import { pactWith } from 'jest-pact'; pactWith(PactOptions, PactFn); PactOptions 파라미터 # jest-pact 와 함께 사용하는 PactOptions 는 pact-js 에서 제공하는 옵션 을 기반으로 추가 옵션 을 제공합니다. 대부분의 경우 이 테스트에서는 consumer , provider , log , dir 옵션을 정의합니다. import { pactWith } from 'jest-pact'; pactWith( { consumer: 'MergeRequests#show', provider: 'GET discussions', log: '../logs/consumer.log', dir: '../contracts/project/merge_requests/show', }, PactFn ); 컨슈머와 프로바이더의 이름 지정 방법에 대한 자세한 내용은 네이밍 규칙 을 참고하세요. PactFn 파라미터 # PactFn 은 테스트를 정의하는 곳입니다. 이 함수 내에서 목(mock) 프로바이더를 설정하고, Jest.describe , Jest.beforeEach , Jest.it 과 같은 표준 Jest 메서드를 사용할 수 있습니다. 자세한 내용은 https://jestjs.io/docs/api 를 참고하세요. import { pactWith } from 'jest-pact'; pactWith( { consumer: 'MergeRequests#show', provider: 'GET discussions', log: '../logs/consumer.log',