0

为什么 Spring Cloud 合约中的 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
  }
}
4

1 回答 1

0

每当您只传递正则表达式时,Spring Cloud Contract 都会使用一个名为 Xeger 的库来生成与该正则表达式匹配的具体值。有时它会生成这样的值。

因此,在这种情况下,IMO 最好使用$(anyNonBlankString())(而不是value(regex(nonBlank())))我们设置字符串的固定值(例如向其添加随机数),而不是从正则表达式生成它。

于 2018-01-15T16:15:28.617 回答