Пересмешивание Jdbctemplate с использованием H2 db дает ошибку - PullRequest
1 голос
/ 30 сентября 2019

Привет, я пытаюсь смоделировать шаблон 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);

1 Ответ

0 голосов
/ 30 сентября 2019

проблема в том, что вы не используете макет, поэтому вы запускаете when на реальном объекте

JdbcTemplate jdbcTemplate = new JdbcTemplate();

следует заменить на:

JdbcTemplate jdbcTemplate = Mockito.mock(JdbcTemplate.class);
...