2017-07-28 62 views
0

我已經在運行春季啓動的服務器應用程序中編寫了春季雲合同。這部分正確地生成我的本地回購存根。現在我想從運行Spring 3.1和Jersey的客戶端應用程序驗證此合同。驗證澤西島應用程序中春季雲合同的客戶端部分的推薦方式

作爲一種解決辦法我評價的人工拆包存根水罐裏的映射文件的可能性,因爲它是在this link

完成啓動使用WireMockClassRule驗證是否有重用AutoConfigureStubRunner這樣做的其他一些簡單的方法爲我工作,仍然不需要添加依賴到Spring Boot?

編輯: 我已經能夠下載和使用Maven插件dependency:unpack解壓存根罐子,然後再使用wiremock(類似於做here)來運行它們。我仍然需要解決的唯一問題是如何動態選擇存根最新版本。通過使用Maven依賴插件,我總是需要提供工件版本。

+0

如果你想作爲一個獨立的進程運行,你可以使用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。 –

+0

非常感謝Marcin。我最終使用Jersey方法並使用了依賴關係:使用最新的版本解壓以始終下載最後一個存根版本 – jesantana

+0

作爲對此問題的答案,您能更深入地描述您的方法嗎?這樣對其他人會有利可圖。 –

回答

0

讓我們假設需要在客戶端使用存根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調用