java - 如何在 Spring Boot 中模拟 Optional bean?
问题描述
在我的SpringBootApplication
中,我有一个bean
注入另一个可选 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 会引发以下错误
无法模拟/监视类 java.util.Optional - 最终类
有没有解决的办法?任何帮助深表感谢。
解决方案
您可以使用Optional.of(b)
.
如果您将 mockito 与注释一起使用,则不能使用@InjectMocks
,因为您的 optional 不会因 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));
}
}
推荐阅读
- javascript - JavaScript 对象循环 - 过滤并显示一次重复项
- uml - 添加表示额外字段或方法的新行后,如何自动重新调整 Draw.io 的 UML“类”形状的大小?
- windows - Docker 容器快速入门 http://{myIP}:81/ScadaLTS/ 不会加载
- selenium - 当 chrome 已经在 selenium-jvm 中打开时,ChromeDriver 崩溃并且不创建会话
- python - 如何使用 FormRequest 发布具有多个相同名称输入的表单?
- mysql - 如何在过去两个月的每个月将相关条目限制为 1 的同时进行内部连接和分组数据?
- ruby-on-rails - 我应该在一个控制器中创建多个控制器还是多个更新方法?
- google-sheets-api - Google 表格 APIv4:从单元格中获取笔记
- python-3.x - 使用 python3.5.3 时得到 KeyError 0:0
- scala - 类型类模式:未找到模拟提升方法