Spring Cloud Contract Stub Jar作为HTTP Rest端点

时间:2019-04-05 04:00:29

标签: docker spring-cloud-contract

我试图将Spring合约存根jar设置为带有使用者的胖jar或http REST端点,我的服务可以将其发送请求并最终接收评估后的响应。

理想情况下,我希望后者可以让消费者运行存根来管理交互。我从消费者到本地生产者存根的测试均按预期进行。当我将所需的注释添加到存根运行器的主类时,编译失败。我认为我缺少一些供消费者将存根作为http REST端点或在其m2内运行所需的配置或设置。

应用编译失败,@EnableStubRunnerServer抱怨以下内容:

ConsumerApplication.java:[8,60] package org.springframework.cloud.contract.stubrunner.server does not exist
ConsumerApplication.java:[15,2] cannot find symbol
[ERROR] symbol: class EnableStubRunnerServer

ConsumerApplication.java:

@SpringBootApplication
@EnableWebMvc
@EnableStubRunnerServer
@Slf4j

public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
}

application.properties(消费者):

stubrunner.ids=com.somecompany.somegroup:producer:0.0.1-SNAPSHOT:stubs:8081
stubrunner.stubsMode=REMOTE
server.ssl.key-store-password=password
server.ssl.key-password=password
server.ssl.trust-store-password=password
server.port=8081

Test.java:-此测试有效

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK)
@AutoConfigureMockMvc
@AutoConfigureJsonTesters
@AutoConfigureStubRunner( ids = "com.somecompany.somegroup:producer:+:stubs:8081", 
    stubsMode = StubRunnerProperties.StubsMode.LOCAL)
@DirtiesContext
public class ContractControllerTest extends AbstractTest {

}

pom:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-contract-stub-runner</artifactId>
    <scope>test</scope>
</dependency>

1 个答案:

答案 0 :(得分:0)

由于您要在主生产代码中添加测试代码,因此必须进行更改

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-contract-stub-runner</artifactId>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-contract-stub-runner</artifactId>
</dependency>