我在运行spring boot的服务器应用程序中编写了一个spring cloud合约。这部分正确地将存根生成到我的本地仓库中。现在我想从运行Spring 3.1和Jersey的客户端应用程序验证此合同。
作为一种解决方法,我评估了将存根jar手动解压缩到映射文件中的可能性,并使用WireMockClassRule启动验证,如this link中所做的那样
还有其他一些简单的方法可以重用AutoConfigureStubRunner为我做这项工作,还是不需要为Spring Boot添加依赖项吗?
编辑:
我已经能够使用maven dependency:unpack
插件下载和解压缩存根jar,然后使用wiremock运行它们(类似于所做的here)。我仍然需要解决的唯一问题是如何动态选择存根最新版本。通过使用maven依赖插件,我总是需要提供工件版本。
答案 0 :(得分:0)
让我们假设需要在客户端使用存根jar。其他东西中的存根包含一个json,其中包含您的合同提供的数据以进行集成测试。这个json有一个由wiremock用来发布类似于我们真实后端的端点的格式。因此需要采取以下步骤:
将存根jar从repo下载到本地计算机并将其复制到wiremock内部文件夹
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<phase>generate-test-resources</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.yourbackend.contract</groupId>
<artifactId>contract-service</artifactId>
<version>LATEST</version>
<type>jar</type>
<classifier>stubs</classifier>
</artifactItem>
</artifactItems>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<excludeTransitive>true</excludeTransitive>
<includes>META-INF/**/mappings/**</includes>
<outputDirectory>${basedir}/target/mappings</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
请注意,LATEST设置为存根的版本,以确保始终检索最后一个存根jar。
在localhost中启动wiremock服务器
<dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock</artifactId>
<scope>test</scope>
</dependency>
然后在测试中
@ClassRule
WireMockClassRule wireMockRule = new WireMockClassRule(port);
您已设置,在测试中进行http调用