Я пытаюсь высмеять класс dao, но я не могу издеваться над dao-классом, он выбрасывает исключение null-указателя (в классе dao я использую шаблон Spring jdbc). Я устал издеваться над шаблоном jdbc, но при этом он возвращает шаблон jdbc как null.Шаблон Jdbc Mocking In java
@RunWith(PowerMockRunner.class)
@PrepareForTest({ LocationAppDAO.class, BeanPropertyRowMapper.class })
public class CopyOfGeoLocationAppTest {
@Autowired
private ApplicationContext applicationContext;
@Test
@SuppressWarnings({ "unchecked" })
public void testJdbcTemplateforDbase() throws Exception {
// LocationAppDAO locationAppdao= new LocationAppDAO();
String queryWgs84 = "SELECT * FROM location_wgs84 where latitude=" + 0
+ " AND longitude=" + 0;
LocationAppDAO locationAppDaoMock= EasyMock.createMock(LocationAppDAO.class);
JdbcTemplate jdbcTemplateMock = EasyMock.createMock(JdbcTemplate.class);
BeanPropertyRowMapper<Location_wgs84> beanPropertyRowMapperMock = EasyMock
.createMock(BeanPropertyRowMapper.class);
EasyMock.replay(beanPropertyRowMapperMock);
// mocking location
Location_wgs84 location_wgs84mock = EasyMock
.createMock(Location_wgs84.class);
location_wgs84mock.setLatitude(0);
location_wgs84mock.setLongitude(0);
EasyMock.replay(location_wgs84mock);
PowerMock.expectNew(BeanPropertyRowMapper.class).andReturn(
beanPropertyRowMapperMock);
PowerMock.replayAll();
ArrayList<Location_wgs84> arrayList = new ArrayList<Location_wgs84>();
Location_wgs84 location1 = new Location_wgs84();
location1.setLatitude(1);
location1.setLongitude(1);
arrayList.add(location1);
Location_wgs84 location2 = new Location_wgs84();
location2.setLatitude(2);
location2.setLongitude(2);
arrayList.add(location2);
Location_wgs84 location3 = new Location_wgs84();
location3.setLatitude(3);
location3.setLongitude(3);
arrayList.add(location3);
EasyMock.expect(
jdbcTemplateMock.query(queryWgs84, beanPropertyRowMapperMock))
.andStubAnswer(new IAnswer<List<Location_wgs84>>() {
@Override
public List<Location_wgs84> answer() throws Throwable {
return arrayList;
};
});
EasyMock.replay(jdbcTemplateMock);
EasyMock.expect(
locationAppDaoMock.location_wgs84Query(0,0))
.andStubAnswer(new IAnswer<List<Location_wgs84>>() {
@Override
public List<Location_wgs84> answer() throws Throwable {
return arrayList;
};
});
EasyMock.replay(locationAppDaoMock);
LocationAppDAO locationAppdao= new LocationAppDAO();
ReflectionTestUtils.setField(locationAppdao, "jdbcTemplate", jdbcTemplateMock);
List<Location_wgs84> arrayListResult = locationAppdao.location_wgs84Query(0, 0);
assertEquals(3.0, arrayListResult.get(2).getLatitude(), 0);
EasyMock.verify(jdbcTemplateMock);
}
}
Как насчет предоставления источника данных, который возвращает данные, которые вам нужны? – Marged