StreamBridge Final 无法被嘲笑

Rub*_*mes 2 spring spring-cloud-stream

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

@MockBean
private StreamBridge bridge;
Run Code Online (Sandbox Code Playgroud)

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

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

  • org.springframework.boot.test.mock.mockito.MockDefinition.createMock(MockDefinition.java:154) 的最终类

小智 5

StreamBridge 是一个最终类,使用 Mockito2 我们可以模拟最终类,但默认情况下此功能是禁用的,需要通过以下步骤启用:

\n
    \n
  1. 在 src/test/resources/ 文件夹中创建目录 \xe2\x80\x98mockito-extensions\xe2\x80\x99 。

    \n
  2. \n
  3. 在 \xe2\x80\x98src/test/resources/mockito-extensions/\xe2\x80\x99 目录中创建文件 \xe2\x80\x98org.mockito.plugins.MockMaker\xe2\x80\x99 。

    \n
  4. \n
  5. 在 org.mockito.plugins.MockMaker 文件中写入内容“mock-maker-inline”。

    \n
  6. \n
  7. 在测试类级别使用 \xe2\x80\x98@ExtendWith(MockitoExtension.class)\xe2\x80\x99

    \n
  8. \n
\n

然后StreamBridge就被mock成功了。

\n