Spring Cloud Stream-集成测试,订户不听事件

时间:2018-12-04 14:12:22

标签: spring-boot spock spring-cloud-stream

我正在努力建立与Spring Cloud Stream的集成测试。

假设我需要测试以下集成流程

  1. 使用POST请求创建实体
  2. 通过消息代理在内部发布事件
  3. 在同一微服务中收集事件并更新内部读取模型
  4. 向读取模型端点发出GET请求,并检查读取模型是否已更新

更新读取模型异步进行。在运行应用程序时,它运行良好(事件被收集和消耗),而在运行集成测试时,则无法运行。标有@StreamListener的方法在运行测试时根本不会被调用,应用程序不会事件连接到消息代理(在我的情况下为kafka)

我使用过spring-cloud-stream-test-supportMessageCollector,但这使我有机会检查事件是否已发布并验证其有效载荷。

我需要检查应用程序是否已收集事件并对其做出正确反应。

我想念什么?应用程序在测试运行期间是否订阅了任何种类的测试资料夹?

1 个答案:

答案 0 :(得分:1)

使用测试绑定程序时,默认情况下,测试绑定程序会覆盖Kafka绑定程序。

要与单元测试在同一项目中运行集成测试,必须通过排除TestSupportBinderAutoConfiguration来将测试配置为使用真实的绑定器。

有关全局排除,请参见SCSt docs

要排除在各个测试中,请参阅Boot docs

  

最后,您还可以使用spring.autoconfigure.exclude属性来控制要排除的自动配置类的列表。

例如在@TestPropertySource中。