[嗨,我正在尝试模拟jdbc模板queryForObject
方法。我正在使用H2 InMem Db。
以下为错误
Caused by: org.h2.jdbc.JdbcSQLException: Method is only allowed for a query. Use execute or executeUpdate instead of executeQuery; SQL statement:
[90002-196]
下面是代码段。
EmbeddedDatabase db = new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScript("table.sql").build();`
JdbcTemplate jdbcTemplate = new JdbcTemplate();
jdbcTemplate.setDataSource(db);
jdbcTemplate.execute("insert into AlertTypeHeader values " +
"(1234,365537,'TestAT','ExtId',123,345,null,null,2,0)");
when(jdbcTemplate.queryForObject(anyString(), new Object[]{},ResultSet::getObject)).thenReturn(RequiredObject);
问题是您没有使用模拟,因此您在真实对象上运行when
JdbcTemplate jdbcTemplate = new JdbcTemplate();
应替换为:
JdbcTemplate jdbcTemplate = Mockito.mock(JdbcTemplate.class);