如何嘲笑JdbcTemplate.queryForObject()方法(How to mock Jd

2019-08-03 21:37发布

我的方法是这样的:

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

请建议我怎么会嘲笑这一点。

Answer 1:

一个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);


Answer 2:

@Mock
JdbcTemplate jdbctemplate;

@Test
public void testRun(){
when(jdbctemplate.queryForObject(anyString(),eq(String.class),anyObject()).thenReturn("data");
}


Answer 3:

使用JMockit,代码将是这样的:

@Mocked
JdbcTemplate jdbcTemplate


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

有关JMockit更多的信息在这里 。



Answer 4:

使用的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



文章来源: How to mock JdbcTemplate.queryForObject() method