使用H2 db模拟Jdbctemplate会出错

问题描述 投票:1回答:1

[嗨,我正在尝试模拟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);
java junit mockito h2 jdbctemplate
1个回答
0
投票

问题是您没有使用模拟,因此您在真实对象上运行when

JdbcTemplate jdbcTemplate = new JdbcTemplate();

应替换为:

JdbcTemplate jdbcTemplate = Mockito.mock(JdbcTemplate.class);
© www.soinside.com 2019 - 2024. All rights reserved.