java - 无法模拟/监视类 java.util.Optional
问题描述
我正在尝试实现这个 JUnit 代码:
private BinlistsService binlistsService = Mockito.mock(BinlistsService.class);
@Mock
Optional<BinLists> binList = null;
@BeforeEach
public void beforeEachTest() throws IOException {
BinLists binLists = new BinLists();
binLists.setId(1);
....
binList = Optional.of(binLists);
}
@Test
public void testBinCountryCheckFilterImpl() {
when(binlistsService.findByName(anyString())).thenReturn(binList);
}
但我得到这个错误堆栈:
org.mockito.exceptions.base.MockitoException:
Cannot mock/spy class java.util.Optional
Mockito cannot mock/spy because :
- final class
at org.data
你知道我该如何解决这个问题吗?
解决方案
@Mock
在Optional<BinLists>
场上删除。
Optional
是一个简单的类,您可以轻松地创建和控制它,因此您不需要模拟它。只需在需要时创建一个实际实例,您已经在其中完成了它beforeEachTest()
:
private BinlistsService binlistsService = Mockito.mock(BinlistsService.class);
Optional<BinLists> binList = null;
@BeforeEach
public void beforeEachTest() throws IOException {
BinLists binLists = new BinLists();
binLists.setId(1);
....
binList = Optional.of(binLists);
}
@Test
public void testBinCountryCheckFilterImpl() {
when(binlistsService.findByName(anyString())).thenReturn(binList);
}
推荐阅读
- asp.net-core - 我可以在.net core 中使用“app_code”文件夹吗?
- php - 在 Laravel 7 中查询上周数据 groupBy dayOfWeek
- android - 无法执行 SQL
- javascript - Django 部署后问题 - 脚本和模型
- html - 处理对话框
- android - Kotlin 列表迭代器跳转到最后一个元素
- scala - 如何从使用 flatmap 进行折叠的列表中导出值列表?
- docker - 在 kubernetes deploymet.yml 中指定 Dockerfile 目标
- javascript - 与受护照保护的快速后端反应的受保护路线
- python - 循环浏览 300k 字典列表的最快方法是什么?