Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何模拟getNamedParameterJdbcTemplate()_Java_Unit Testing_Mockito_Spring Jdbc_Spring Junit - Fatal编程技术网

Java 如何模拟getNamedParameterJdbcTemplate()

Java 如何模拟getNamedParameterJdbcTemplate(),java,unit-testing,mockito,spring-jdbc,spring-junit,Java,Unit Testing,Mockito,Spring Jdbc,Spring Junit,我试图模拟一个扩展NamedParameterJdbcDaoSupport的DAO实现类 这就是我的DAO界面的外观: public interface TestDAO{ List<String> search(); } 所以我想实现一些类似于 when(getNamedParameterJdbcTemplate().query(mySQLQuery,myMapSqlParameterSource, myRowMapper)).thenReturn(whatIWantToRet

我试图模拟一个扩展NamedParameterJdbcDaoSupport的DAO实现类

这就是我的DAO界面的外观:

public interface TestDAO{

List<String> search();

}
所以我想实现一些类似于

when(getNamedParameterJdbcTemplate().query(mySQLQuery,myMapSqlParameterSource, myRowMapper)).thenReturn(whatIWantToReturn);
我找不到这方面的任何信息。有人能指引我吗。如何做到这一点

public class TestDAOImplTestCase{

    @Test
    public void testSearch(){
        when(getNamedParameterJdbcTemplate().query(mySQLQuery,myMapSqlParameterSource, myRowMapper)).thenReturn(whatIWantToReturn); 
    } 
}

相信我,你不会想这么做的。您真正想做的是做两个测试:

  • 更简单的方法是:模拟整个
    TestDao
    接口,如果其余代码将正确的参数传递给
    search
    并正确处理结果,则模拟单元测试

  • 稍微难一点的一个:集成测试。实际实现
    TestDAOImpl
    ,将其连接到真实数据库,用数据预填充数据库,执行
    search
    方法,检查是否返回正确答案


  • 我想做的是在调用查询方法时返回一些测试结果?
    when(getNamedParameterJdbcTemplate().query(mySQLQuery,myMapSqlParameterSource, myRowMapper)).thenReturn(whatIWantToReturn);
    
    public class TestDAOImplTestCase{
    
        @Test
        public void testSearch(){
            when(getNamedParameterJdbcTemplate().query(mySQLQuery,myMapSqlParameterSource, myRowMapper)).thenReturn(whatIWantToReturn); 
        } 
    }