StreamBridge Final 不能被模拟

时间:2021-04-27 03:30:07

标签: spring spring-cloud-stream

我无法在我的单元测试中模拟 StreamBridge。

@MockBean
private StreamBridge bridge;

由于以下原因,我收到了 IllegalStateException:

引起:org.mockito.exceptions.base.MockitoException: 无法模拟/间谍类 org.springframework.cloud.stream.function.StreamBridge Mockito 不能模拟/间谍,因为:

  • 最后一节课 在 org.springframework.boot.test.mock.mockito.MockDefinition.createMock(MockDefinition.java:154)

1 个答案:

答案 0 :(得分:0)

我联系了 StreamBridge 类的作者 Oleg,他基本上是这样说的:

<块引用>

我们不应该为了简单地容纳一些测试框架而将 StreamBridge 开放。如果有的话,它应该是相反的。

另外,奥列格提到了

<块引用>

此外,我们提供了一个专门为这些类型的情况设计的测试活页夹,您可以在其中实际验证与 StreamBridge(和其他组件)的真实活页夹交互,而不是实际上可能错误的模拟假设。有关使用 StreamBridge 进行测试的更多信息,请查看 https://github.com/spring-cloud/spring-cloud-stream/blob/master/spring-cloud-stream/src/test/java/org/springframework/cloud/stream/function/StreamBridgeTests.java

考虑到上面 Oleg 的响应,并且由于我需要隔离 Spring Cloud Stream 代码(StreamBridge 和其他任何东西)来测试我的代码,我将研究 Spring Cloud Stream 中的测试绑定器。

顺便说一句,我使用的是最新的 Spring Boot (2.4.5) / Spring Cloud Train Release (2020.0.2)。

谢谢,

鲁本斯