如何在Pact-JVM中匹配键符合正则表达式的对象?
在Pact-JVM中匹配键为正则、值为布尔类型的动态对象
我刚好碰到过类似的需求,其实你完全可以用eachKeyLike方法结合基本类型匹配器来实现这个场景,不需要嵌套对象。
你之前误解了eachKeyLike的nestedObject参数——它不仅可以用来定义嵌套的对象结构,也能直接指定基本类型的匹配规则。针对你的场景,只需要在第三个参数的Consumer里调用booleanType(),就能把每个动态键对应的值匹配为布尔类型。
具体代码示例
LambdaDsl.newJsonArray((array) -> { array.object((account) -> { account.numberType("accountId", 1); account.array("permissions", (permArray) -> { permArray.object((perm) -> { perm.object("schedule", (schedule) -> { // 第一个参数是示例键,第二个是键的正则表达式,第三个定义值的匹配规则 schedule.eachKeyLike( "01/01/2018", "\\d{2}/\\d{2}/\\d{4}", (valueMatcher) -> valueMatcher.booleanType(false) ); perm.numberType("permissionId", 3); }); }); }); }); });
代码说明
- 第二个参数的正则
\\d{2}/\\d{2}/\\d{4}用来匹配所有符合MM/DD/YYYY格式的日期键 valueMatcher.booleanType(false)表示:不管实际响应里对应的值是true还是false,只要是布尔类型就算匹配通过(示例值填false只是给Pact生成契约时用的参考)- 这样写之后,Pact会验证
schedule对象里的所有键都符合指定的正则,并且对应的值都是布尔类型,不管键的数量有多少都能正确匹配
内容的提问来源于stack exchange,提问作者Quincy Bowers
相关产品推荐
相关产品推荐

