0

我正在尝试模拟扩展 NamedParameterJdbcDaoSupport 的 DAO 实现类

这是我的 DAO 界面的样子:

public interface TestDAO{

List<String> search();

}

这就是我的实现类的方式:

    public class TestDAOImpl extends NamedParameterJdbcDaoSupport implements TestDAO {

    public List<String> search(){

    return getNamedParameterJdbcTemplate().query(mySQLQuery,myMapSqlParameterSource, myRowMapper);
    }
}

我想要实现的是编写一个模拟测试用例来模拟调用的行为

getNamedParameterJdbcTemplate().query(mySQLQuery,myMapSqlParameterSource, myRowMapper)

所以我想实现类似的东西

when(getNamedParameterJdbcTemplate().query(mySQLQuery,myMapSqlParameterSource, myRowMapper)).thenReturn(whatIWantToReturn);

我找不到这方面的任何信息。有人可以指导我。这个怎么做?

public class TestDAOImplTestCase{

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

1 回答 1

0

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

  1. 更简单的一个:如果其余代码将正确的参数传递给并正确处理结果,则模拟整个TestDao界面和单元测试search

  2. 更难的一个:集成测试。采取实际实现TestDAOImpl,将其连接到真实数据库,用数据预填充数据库,执行该search方法并检查它是否返回正确答案

于 2015-06-30T22:06:43.043 回答