【问题标题】:How to Mock a JDBC datasource Object causing illegal Argument exception saying Property 'data source' is required?如何模拟导致非法参数异常的 JDBC 数据源对象说需要属性“数据源”?
【发布时间】:2019-11-29 11:10:40
【问题描述】:

我的 dao 类包含如下语句

JdbcTemplate jdbcTemplate = new JdbcTemplate(datasourceResolver.selectDataSource(region));

我很难模拟该声明

我在我的测试类中为 datasourceResolver 和 datasource 创建了模拟对象,并在我的测试方法中调用如下,但它抛出非法 Argument 异常,说 Property 'datasource' is required' Mockito.when(datasourceResolver.selectDataSource(Mockito.anyString())).thenReturn(dataSource);

请告知我们如何模拟这个数据源对象?

提前致谢!

【问题讨论】:

  • 请添加您的异常的堆栈跟踪,相关的单元测试和被测代码。此外,虽然可以模拟 jdbc 数据源,但我不建议这样做,因为您通常必须通过编写集成测试来涵盖这一点。
  • 我尝试了类似这样的公共数据源 dataSource() throws SQLException { dataSource.setLoginTimeout(100);返回 Mockito.mock(DataSource.class); } 但它不工作
  • 分享DAO和Test类的java代码。

标签: spring-boot junit mockito datasource spring-jdbc


【解决方案1】:

你注入了 mock 吗?

将断点放置到您的 datasourceResolver 的 JdbcTemplate jdbcTemplate = new JdbcTemplate(datasourceResolver.selectDataSource(region)); 行尾检查实例。

【讨论】:

  • 是的,我已经注入了我必须编写 junit 的 Dao 类。该行提到 abpve 失败并出现非法参数异常,说需要属性数据源
猜你喜欢
  • 1970-01-01
  • 2017-05-06
  • 2012-07-17
  • 2018-01-25
  • 2011-12-23
  • 2012-03-22
  • 2021-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多