2017-02-14 35 views
0

我正在使用Springboot 2.4.3,合同驗證程序1.0.3發佈使用Spring雲合同測試。我創建了基於消息的測試Groovy的DSL合同如下編譯春天雲合同groovy生成的測試文件時出錯DSL

包doc.messaging

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 

請 幫幫我。

+0

能否請你張貼在某個地方,或至少正確格式的代碼?我無法正確閱讀。 –

+0

它仍然看起來不好 - 你能格式化整個合同嗎?從我看到你的標籤在描述中是完全錯誤的。如果你可以在任何地方上傳你的合同,這將是最好的。也請更新您生成的測試。 –

+0

上傳文件到https://gist.github.com/ramju/b19f562a5f7a954afd1cbf09b8597298。 – user3777385

回答

0

我認爲你的問題我來自一個錯誤的聲明中的位置:

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('.*'))) 
]) 
+0

謝謝你的迴應。它的輸出沒有問題,它的messageFrom()有效載荷有問題。如果我用這個輸入替換這個輸入{ \t \t triggeredBy('func()') \t}它的工作原理。只有當我從消息有效載荷的輸入中接收到某些東西時,它纔給出問題 – user3777385