【发布时间】:2018-12-27 11:21:07
【问题描述】:
所以我一直在尝试使用 Spring Cloud Contract 来测试 RabbitListener。
到目前为止,我发现通过在合同中定义“triggeredBy”,生成的测试将调用那里提供的方法,因此我们需要在 TestBase 中提供该方法的实际实现。 另一件事是“outputMessage”,在这里我们可以验证之前的方法调用是否正确地导致了一些消息体发送到某个交换。
来源:documentation 和 sample
我的问题是,有没有办法从合约中生成输入消息,而不是触发自己的自定义方法? 可能类似于文档中的 Spring Integration 或 Spring Cloud Stream 示例:
Contract.make {
name("Book Success")
label("book_success")
input {
messageFrom 'input.exchange.and.maybe.route'
messageHeaders {
header('contentType': 'application/json')
header('otherMessageHeader': '1')
}
messageBody ([
bookData: someData
])
}
outputMessage {
sentTo 'output.exchange.and.maybe.route'
headers {
header('contentType': 'application/json')
header('otherMessageHeader': '2')
}
body([
bookResult: true
])
}
}
我在他们的示例项目中找不到任何示例来说明如何执行此操作。
使用 Spring Cloud Contract 来记录和测试 rest api 服务,如果可能的话,我希望通过在基于事件的服务的合同文件中定义输入和预期输出来保持一致。
【问题讨论】:
标签: spring spring-cloud spring-amqp spring-cloud-contract