尝试模拟Querydsl的SQLQueryFactory进行DAO单元测试。首次使用Mockito的深层存根。 以下是失败的最小代码
@Test
void tryMockQueryDsl() {
SQLQueryFactory sql = Mockito.mock(SQLQueryFactory.class, Mockito.RETURNS_DEEP_STUBS);
Mockito.when(sql.select(ArgumentMatchers.<Expression<?>>any())
.from(ArgumentMatchers.<Expression<?>>any())
.fetchFirst()
).thenReturn(null);
}
,但以下情况除外:
java.lang.ClassCastException:com.querydsl.sql.ProjectableSQLQuery $ MockitoMock $ 1584151766类不能转换为com.querydsl.sql.SQLQuery类(com.querydsl.sql.ProjectableSQLQuery $ MockitoMock $ 1584151766和com.querydsl.sql。 SQLQuery位于加载程序“ app”的未命名模块中)
可能是什么问题?
答案 0 :(得分:0)
无法施放假人。代替sass-loader
自己模拟每个方法并返回预期类的模拟实例。
如果您不想抑制未定义泛型类型的警告,则可以使用RETURN_DEEP_STUBS
批注来创建模拟,如here所述。
此示例对测试用例没有多大意义(因为它不进行任何测试),但是它展示了如何避免异常。
@Mock