给定一个扩展SimpleJdbcDaoSupport的类,如何模拟SimpleJdbcTemplate?Spring JUnit和Mockito - SimpleJdbcTemplate
public class SimpleJdbcDaoSupportExtension extends SimpleJdbcDaoSupport {
public SimpleJdbcDaoSupportExtension (JdbcTemplate jdbcTemplate){
super.setJdbcTemplate(jdbcTemplate);
}
public MyDomainObj getResult(){
SimpleJdbcTemplate sjdbc = getSimpleJdbcTemplate();
MyDomainObj result = sjdbc.query(*whatever necessary args*.);
return result;
}
}
然后,使用的Mockito:
public class Test {
@Mock private JdbcTemplate mockedJdbcTemplateDedendency;
private SimpleJdbcDaoSupportExtension testObj;
@Before
public void doBeforeEachTestCase() {
MockitoAnnotations.initMocks(this);
SimpleJdbcDaoSupportExtension sje = new SimpleJdbcDaoSupportExtension (mockedJdbcTemplateDedendency);
}
@Test
public final void test(){
when(mockedJdbcTemplateDedendency.query("what to query").thenReturn(new MyDomainObj());
}
}
嘲笑的JdbcTemplate被注入,但由于在DAO类依靠了SimpleJdbcTemplate进行查询(用于映射到对象),并且它是由SimpleJdbcDaoSupport内部构造 - 嘲笑JdcbTemplate对SimpleJdbcTemplate没有影响。那么如何做到这一点,在没有公共setter的情况下,构建SimpleJdbcTemplate的唯一方法就是依赖该方法getSimpleJdbcObject()?
无法使用你刚才ReflectionUtils它注入:http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/util/ReflectionUtils.html? – esaj 2011-02-12 09:03:05