java - 如何在 Spring Boot 中模拟可选 bean?

标签 java spring spring-boot mockito springmockito

在我的SpringBootApplication ,我有一个bean它注入(inject)另一个可选的bean(如下所示)

@Service
public class A {

    //B is another @Component from one of the dependencies
    private Optional<B> b;
    ...
    ...
}

我正在为 class A 编写集成测试我需要去哪里@MockBean Optional<B> b 。然而自从Optional是最后一个类,spring mockito 引发以下错误

Cannot mock/spy class java.util.Optional - final class

有办法解决这个问题吗?非常感谢任何帮助。

最佳答案

您可以使用Optional.of(b)

如果你使用带注释的mockito,那么你不能使用@InjectMocks,因为mockito不会识别你的可选内容。您必须自己创建服务A。像这样的事情:

@RunWith(MockitoJUnitRunner.class)
public class ATest {
    @Mock
    private B b;

    private A a;

    @Before
    public void setup() {
        a = new A(Optional.of(b));
    }
}

关于java - 如何在 Spring Boot 中模拟可选 bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60401256/

相关文章:

java - 为 swagger-UI 文档的每个枚举值添加描述

java - 空指针异常, "Attempt to read from field on a null object reference"

java - 如何修复 GridBagLayout 按钮大小

java - 解析 JSON 的简单 Spring 代码

java - Base64解码,使用UTF-8、UTF-16输出不正确

java - SLF4J 自定义绑定(bind)不起作用

java - 哪个先加载?静态 block 还是 spring bean?

java - 带有依赖项的 jar spring boot gradle

java - Spring Controller 不被视为单例

Spring 2.2.1构建错误无法找到 Artifact com.fasterxml.jackson :jackson-bom:pom:2. 10.5