Ошибка компиляции тестового файла, сгенерированного из Spring Cloud Contract Groovy DSL

Я использую весеннее облачное тестирование контрактов с использованием Springboot 2.4.3, релиз проверки контракта 1.0.3. Я создал отличный DSL-контракт для тестирования на основе сообщений, как показано ниже.

пакет doc.messaging

Contract.make {description 'contract'

    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

Пожалуйста помоги.


person user3777385    schedule 14.02.2017    source источник
comment
Не могли бы вы выложить это где-нибудь или хотя бы правильно отформатировать код? Я не могу это правильно прочитать.   -  person Marcin Grzejszczak    schedule 14.02.2017
comment
По-прежнему выглядит плохо - не могли бы вы отформатировать весь контракт, пожалуйста? Судя по тому, что я вижу, этикетка находится в описании, которое совершенно неверно. Было бы лучше, если бы вы могли где-нибудь загрузить свой контракт. Также обновите созданный вами тест.   -  person Marcin Grzejszczak    schedule 14.02.2017
comment
загруженные файлы на gist.github.com/ramju/b19f562a5f7a954afd1cbf8.   -  person user3777385    schedule 14.02.2017
comment
Большое спасибо за изучение этой проблемы   -  person user3777385    schedule 14.02.2017
comment
кто-нибудь может дать совет по этому вопросу? ценю вашу огромную помощь   -  person user3777385    schedule 16.02.2017
comment
Я считаю, что это ошибка. Сообщите об ошибке в проекте github Spring Cloud Contract. В качестве обходного пути вы можете предоставить раздел с заголовками из-за того, что, как я вижу, отсутствует в методе create - вот почему компилятор кричит, что код неправильный.   -  person Marcin Grzejszczak    schedule 17.02.2017


Ответы (1)


Я думаю, что ваша проблема возникла из-за неправильного объявления здесь:

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('.*')))
])
person Fabian    schedule 23.02.2017
comment
Спасибо за ответ. Это не проблема с выводом, это проблема с полезной нагрузкой messageFrom (). Если я заменю этот ввод на input {triggeredBy ('func ()')}, он работает. Его проблема возникает только тогда, когда я получаю что-то от ввода с полезной нагрузкой сообщения. - person user3777385; 27.02.2017