給定一個擴展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