0

我正在尝试将 Spring Cloud Contract 合并到现有项目中。我在 REST 方面取得了一些成功,但我在努力设置消息传递方面。

到目前为止,我已经在生产者身上建立了一个合同,它确实在目标/生成的测试源/合同中产生了一个测试。我还为测试设置了一个基类。

我无法克服这个错误:

2017-09-08 17:10:51.759 错误 - --[]- [main] osccvmstream.StreamStubMessages:尝试解析目标时发生异常。将采用名称[邀请]

org.springframework.beans.factory.NoSuchBeanDefinitionException:在 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:353) 上没有“org.springframework.cloud.stream.config.ChannelBindingServiceProperties”类型的合格 bean在 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:340) 在 org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1093) 在 org.springframework.cloud.contract.verifier .messaging.stream.StreamStubMessages.resolvedDestination(StreamStubMessages.java:86) 在 org.springframework.cloud.contract.verifier.messaging.stream.StreamStubMessages.receive(StreamStubMessages.java:73) 在 org.springframework.cloud.contract.verifier.messaging.stream.StreamStubMessages.receive(StreamStubMessages.java:110) at org.springframework.cloud.contract.verifier.messaging.stream.StreamStubMessages.receive(StreamStubMessages.java:36) at org. springframework.cloud.contract.verifier.messaging.internal.ContractVerifierMessaging.receive(ContractVerifierMessaging.java:40) at org.springframework.cloud.contract.verifier.tests.email.MessagingTest.validate_invitedContract(MessagingTest.java:27)在 org.springframework.cloud.contract.verifier.tests.email.MessagingTest.validate_invitedContract(MessagingTest.java:27) 处接收(ContractVerifierMessaging.java:40)在 org.springframework.cloud.contract.verifier.tests.email.MessagingTest.validate_invitedContract(MessagingTest.java:27) 处接收(ContractVerifierMessaging.java:40)

然后

2017-09-08 17:10:51.759 错误 - --[]- [main] osccvmstream.StreamStubMessages:尝试从名为 [invites] 的频道读取消息时发生异常

org.springframework.beans.factory.NoSuchBeanDefinitionException:在 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:687) 在 org.springframework.beans.factory.support.AbstractBeanFactory 中没有名为“邀请”的 bean .getMergedLocalBeanDefinition(AbstractBeanFactory.java:1207) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202 )

我在 src/test/resources 下的 application.yml 文件:

spring: cloud: stream: bindings: output: content-type: application/json destination: invites

我有以下依赖项:

`
    <!-- Spring Cloud Contract Deps -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-stream</artifactId>
        <version>1.2.2.RELEASE</version>
    </dependency>       

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-contract-verifier</artifactId>
        <version>1.1.3.RELEASE</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-stream-test-support</artifactId>
        <version>1.2.2.RELEASE</version>
        <scope>test</scope>
    </dependency>
    <!-- END SCC Deps -->`

我梳理了文档,观看了 Marcin 的演讲并查看了 Spring Cloud Contract 的示例,但我被卡住了。任何帮助将不胜感激。

4

1 回答 1

0

首要问题:

请使用发布火车。在发布列车中,我们知道没有无效的依赖项。

第二题:

你没有@EnableBinding(Source.class)注释。这就是 Stream 不知道如何绑定到output频道的原因。

如果您访问 Spring Cloud Contract 示例,您会在主应用程序类上注意到这一行(https://github.com/spring-cloud-samples/spring-cloud-contract-samples/blob/master/producer/src /main/java/com/example/ProducerApplication.java#L9)。在我将此行添加到您的代码后,上下文开始,但测试失败导致消息未发送。

于 2017-09-11T13:25:37.090 回答