如何将 Pact Matcher 用于 'Strings' 以外的值

How to use Pact Matcher for values other than 'Strings'

在 pact-jvm 中(groovy 在消费者端,gradle 在提供者端),我正在尝试使用如下的 Pact 匹配器:

name regexp(~/\w+/,'sony')

Pact 匹配器正则表达式是否仅适用于字符串?对于字符串以外的值,是否需要使用 Pact term?

如果以上两题的答案都是'yes'。请解释一下如何使用 groovy 风格的 Pact 术语。

我试过像下面这样使用 Pact 术语:

date Pact.Term(generate :"02/11/2013", matcher:/\d{2}\/\d{2}\/\d{4}/)

但得到 groovy - MethodMissingException。 我的完整回复正文供参考:

withBody {
                id regexp('[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}','e8cda07e-849f-49c2-94d6-aaa5c4ab7fcd')
                name regexp(~/\w+/,'sony')
                date Pact.Term(generate :"02/11/2013", matcher:/\d{2}\/\d{2}\/\d{4}/)
        }

正则表达式仅适用于字符串。

如果你想匹配一个日期,我建议使用 date 匹配器,例如

withBody {
                id regexp('[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}','e8cda07e-849f-49c2-94d6-aaa5c4ab7fcd')
                name regexp(~/\w+/,'sony')
                date date("dd/MM/yyyy", "02/11/2013")
         }

查看可用的 DSL 方法https://github.com/DiUS/pact-jvm/tree/master/pact-jvm-consumer-groovy#dsl-methods-1