W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
您還可以使用Spring REST Docs生成Spring Cloud Contract DSL文件和文檔。如果與Spring Cloud WireMock結(jié)合使用,則會同時獲得合同和存根。
您為什么要使用此功能?社區(qū)中的一些人詢問有關(guān)他們希望轉(zhuǎn)向基于DSL的合同定義的情況的問題,但是他們已經(jīng)進行了許多Spring MVC測試。使用此功能,您可以生成合同文件,以后可以修改合同文件并將其移動到文件夾(在配置中定義),以便插件找到它們。
您可能想知道為什么WireMock模塊中有此功能。之所以具有此功能是因為生成合同和存根都是有意義的。
考慮以下測試:
this.mockMvc .perform(post("/foo").accept(MediaType.APPLICATION_PDF) .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.APPLICATION_JSON) .content("{\"foo\": 23, \"bar\" : \"baz\" }")) .andExpect(status().isOk()).andExpect(content().string("bar")) // first WireMock .andDo(WireMockRestDocs.verify().jsonPath("$[?(@.foo >= 20)]") .jsonPath("$[?(@.bar in ['baz','bazz','bazzz'])]") .contentType(MediaType.valueOf("application/json"))) // then Contract DSL documentation .andDo(document("index", SpringCloudContractRestDocs.dslContract()));
前面的測試將創(chuàng)建上一部分中介紹的存根,同時生成合同和文檔文件。
該合同稱為index.groovy
,可能類似于以下示例:
import org.springframework.cloud.contract.spec.Contract Contract.make { request { method 'POST' url '/foo' body(''' {"foo": 23 } ''') headers { header('''Accept''', '''application/json''') header('''Content-Type''', '''application/json''') } } response { status OK() body(''' bar ''') headers { header('''Content-Type''', '''application/json;charset=UTF-8''') header('''Content-Length''', '''3''') } testMatchers { jsonPath('$[?(@.foo >= 20)]', byType()) } } }
生成的文檔(在這種情況下為Asciidoc格式)包含格式化的合同。該文件的位置為index/dsl-contract.adoc
。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: