讓我們假設需要在客戶端使用存根jar。在其他東西之間存在一個json,其中包含您的合同提供的用於執行集成測試的數據。這個json有一個由wiremock用來發布類似於我們真正的後端的端點的格式。所以,下面的步驟必須採取:
下載存根罐子從回購到本地機器上,並把它複製到這裏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>
注意,最新的是設置爲版本該存根確保始終最後一個存根jar被檢索。在本地主機
開始wiremock服務器
<dependency>
<groupId>com.github.tomakehurst</groupId>
<artifactId>wiremock</artifactId>
<scope>test</scope>
</dependency>
,然後在測試
@ClassRule
WireMockClassRule wireMockRule = new WireMockClassRule(port);
您的設定,做測試的HTTP調用
如果你想作爲一個獨立的進程運行,你可以使用Stub Runner Boot(https://cloud.spring.io/spring-cloud-contract/spring-cloud- contract.html#_stub_runner_boot_application)並允許它下載所有內容。如果不是的話,你可以使用JUnit規則(雖然我沒有根據Spring 3.1進行檢查) - https://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html#_stub_runner_junit_rule。 –
非常感謝Marcin。我最終使用Jersey方法並使用了依賴關係:使用最新的版本解壓以始終下載最後一個存根版本 – jesantana
作爲對此問題的答案,您能更深入地描述您的方法嗎?這樣對其他人會有利可圖。 –