SpringCloud Contracts的不同基類

2023-12-07 17:20 更新

如果合同之間的基類不同,則可以告訴Spring Cloud Contract插件自動生成的測試應擴展哪個類。您有兩種選擇:

  • 遵循約定,提供packageWithBaseClasses
  • 通過baseClassMappings提供顯式映射

按照慣例

約定是這樣的:如果您在src/test/resources/contract/foo/bar/baz/下?lián)碛泻贤?,并且?code class="literal" i="3746">packageWithBaseClasses屬性的值設置為com.example.base,則Spring Cloud Contract驗證程序會假設存在一個BarBazBase com.example.base包下的類。換句話說,系統(tǒng)將獲取包的最后兩個部分(如果存在),并形成一個后綴為Base的類。此規(guī)則優(yōu)先于baseClassForTests。這是一個在contracts閉包中如何工作的示例:

packageWithBaseClasses = 'com.example.base'

通過映射

您可以將合同包的正則表達式手動映射到匹配合同的基類的完全限定名稱。您必須提供一個名為baseClassMappings的列表,該列表由baseClassMapping對象組成,這些對象采用從contractPackageRegexbaseClassFQN的映射。考慮以下示例:

baseClassForTests = "com.example.FooBase"
baseClassMappings {
	baseClassMapping('.*/com/.*', 'com.example.ComBase')
	baseClassMapping('.*/bar/.*': 'com.example.BarBase')
}

假設您的合同是-src/test/resources/contract/com/-src/test/resources/contract/foo/

通過提供baseClassForTests,我們可以在沒有成功映射的情況下進行回退。(您也可以提供packageWithBaseClasses作為后備。)這樣,從src/test/resources/contract/com/合約生成的測試擴展了com.example.ComBase,而其余測試擴展了com.example.FooBase。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號