为什么Spring云契约中的regex(nonBlank())有时会生成像\ u0008这样的控制符号,这会破坏生成的java文件的编译?这使得nonBlank()类型不可靠且不可用。我可以指定自己的正则表达式,如[a-z]*
,但它也可以方便地覆盖非ascii unicode符号。
合同示例:
package contracts.api
import org.springframework.cloud.contract.spec.Contract
Contract.make {
request {
method 'GET'
urlPath('/v1/users') {
queryParameters {
parameter 'userId': value(regex(nonBlank()))
}
}
}
response {
status 200
}
}
答案 0 :(得分:0)
每当您只传递正则表达式时,Spring Cloud Contract使用一个名为Xeger的库来生成与该正则表达式匹配的具体值。有时它会产生这样的价值。
所以IMO在这种情况下,最好使用$(anyNonBlankString())
(而不是value(regex(nonBlank()))
)我们设置String的固定值(例如向其添加一个随机数)而不是生成它来自正则表达式。