我正在使用 Spring Cloud 合约测试,使用 Springboot 2.4.3,合约验证器 1.0.3 发布。我为基于消息的测试创建了一个时髦的DSL合约,如下所示
包文档消息传递
Contract.make { 描述 "合同">
label 'label2'
input {
messageFrom('generateDoc')
messageBody([
docId: 'D111'
])
}
outputMessage {
sentTo('DocGenerated')
body([
"docId" : value(consumer('D1111'), producer(regex('.*'))),
"DocNumber" : value(consumer('123'),producer(regex('.*')))
])
}
}
它失败并给出以下错误:
Error:(24, 89) java: method create in class org.springframework.cloud.contract.verifier.messaging.internal.ContractVerifierMessaging<M> cannot be applied to given types; required: java.lang.Object,java.util.Map found: java.lang.String reason: actual and formal argument lists differ in length
请帮忙。
我认为你的问题来自这里的错误声明:
body([
"docId" : value(consumer('D1111'), producer(regex('.*'))),
"DocNumber" : value(consumer('123'),producer(regex('.*')))
])
它应该看起来像这样:
body([
docId : value(consumer('D1111'), producer(regex('.*'))),
DocNumber : value(consumer('123'),producer(regex('.*')))
])