假设需要在客户端使用一个存根 jar。其他事物中的存根有一个 json,其中包含您的合约提供的用于执行集成测试的数据。这个 json 有一种格式,wiremock 使用它来发布一个类似于我们真实后端的端点。所以需要采取以下步骤:
从 repo 下载存根 jar 到您的本地机器并将其复制到 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 调用