如何模拟JdbcTemplate.queryForObject()方法

我的方法看起来像这样:

public class Decompile extends JdbcDaoSupport public void getRunner(){ String val = this.getJdbcTemplate().queryForObject(sql,String.class, new Object[]{1001}); } } 

请建议我如何嘲笑这个。

一个EasyMock-3.0示例

  String sql = "select * from t1"; Object[] params = new Object[] { 1001 }; JdbcTemplate t = EasyMock.createMock(JdbcTemplate.class); EasyMock.expect( t.queryForObject(sql, String.class, params)).andReturn("res"); EasyMock.replay(t); 
 @Mock JdbcTemplate jdbctemplate; @Test public void testRun(){ when(jdbctemplate.queryForObject(anyString(),eq(String.class),anyObject()).thenReturn("data"); } 

使用JMockit,代码如下:

 @Mocked JdbcTemplate jdbcTemplate new Expectations() { jdbcTemplate.queryForObject(sql,String.class, new Object[]{1001}); result = "result you want"; } 

有关JMockit的更多信息,请点击此处 。

使用Mockito,您还可以模拟queryForObject(..)方法,如下所示:

 @Mock JdbcTemplate jdbctemplate; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); } @Test public void testRun(){ when(jdbctemplate.queryForObject(eq("input string"), refEq(new Object[]{1001}), eq(String.class))).thenReturn("data"); } 

一些额外的信息来源 – http://sourcesnippets.blogspot.com/2013/06/jdbc-dao-unit-test-using-mockito.html