토리맘의 한글라이즈 프로젝트 logo 토리맘의 한글라이즈 프로젝트

스프링 클라우드 컨트랙트 공식 레퍼런스를 한글로 번역한 문서입니다.

전체 목차는 여기에 있습니다.


Spring Cloud Contract는 컨텍스트 패스context path를 지원한다.

컨텍스트 패스context path를 사용할 땐 프로듀서producer 쪽만 변경하면 된다. 그리고 explicit 모드로 테스트를 생성해야 한다. 컨슈머consumer 쪽은 그대로 나둬도 된다. 참고로, explicit 모드를 사용해야만 자동 생성 테스트가 통과한다. 테스트를 EXPLICIT 모드로 변경하는 방법은 아래 예제를 참고해라:

Maven Gradle
<plugin>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-contract-maven-plugin</artifactId>
    <version>${spring-cloud-contract.version}</version>
    <extensions>true</extensions>
    <configuration>
        <testMode>EXPLICIT</testMode>
    </configuration>
</plugin>

이렇게 하면 MockMvc를 사용하지 않는 테스트를 생성할 수 있다. 즉, 실제로 요청을 전송한다는 뜻으로, 자동 생성 테스트의 베이스 클래스가 실제 소켓으로 동작하도록 설정해줘야 한다.

아래 명세contract를 예시로 들어보면:

org.springframework.cloud.contract.spec.Contract.make {
	request {
		method 'GET'
		url '/my-context-path/url'
	}
	response {
		status OK()
	}
}

다음은 베이스 클래스와 RestAssured를 세팅하는 샘플 코드다:

import io.restassured.RestAssured;
import org.junit.Before;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.server.LocalServerPort;

@SpringBootTest(classes = ContextPathTestingBaseClass.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class ContextPathTestingBaseClass {
	
	@LocalServerPort int port;
	
	@Before
	public void setup() {
		RestAssured.baseURI = "http://localhost";
		RestAssured.port = this.port;
	}
}

이렇게 세팅하면:


Next :
3.4.6. Working with REST Docs
Spring REST Docs 통합하기

전체 목차는 여기에 있습니다.

<< >>

TOP