unit-testing - 如何模拟 CriteriaQuery.where(EntityRoot.get(ID).in(List)
问题描述
我正在尝试模拟功能块
@Mock
private EntityManager entityManager;
@Mock
private CriteriaBuilder criteriaBuilder;
@Mock
CriteriaQuery<Entity> criteriaQuery;
@Mock
TypedQuery<Entity> typedQuery;
@Mock
Predicate predicate;
@Mock
Root<Entity> EntityRoot;
criteriaQuery.where(criteriaBuilder.and(
EntityRoot.get(ID).in(request.getIdList()),
criteriaBuilder.greaterThanOrEqualTo(EntityRoot.get(columnName),
Request.getTimeRangeFilter().getStartDate())));
ID - 静态字符串
我尝试用下面的代码模拟
when(criteriaQuery.where(criteriaBuilder.and(predicate, predicate))).thenReturn(criteriaQuery);
但是为了线EntityRoot.get(ID).in(request.getIdList())
我收到以下错误
我在这里做错了什么
解决方案
@Mock
Path<Object> path;
when(EntityRoot.get(anyString())).thenReturn(path);
when(path.in(Mockito.anyList())).thenReturn(predicate);
这个解决方案终于奏效了。
推荐阅读
- javascript - 将 Javascript HTML 字符串转换为标签数组和内部内容
- rust - 关闭完成时访问不正确
- javascript - 无法正确解码/编码 URL
- c++ - 如何访问 QDialogbox 的 Accepted 和 Close 事件
- python - 数据框到字典分组和键/值是其他列
- ajax - ajax url中的laravel命名路由未被解释
- airflow - 无法访问 Airflow default_args
- swift - 谷歌登录按钮自定义
- lua - 如何使用 Lua 将 png 转换为灰度?
- python-3.x - NameError: name 'ntxtbox' 未定义,即使 ntxtbox 是一个全局变量