Я пытаюсь реализовать EasyMock 3.4 в проекте Java Spring. Успешно издевался над всем объектом и тестировал классы, кроме DAO, который использует JDBCTemplate.EasyMock on Spring jdbcTemplate всегда возвращает нуль, а не насмешливый объект
@RunWith(EasyMockRunner.class)
public class DummyDAOImplTest extends EasyMockSupport {
@TestSubject
private DummyDAOImpl dummyDAOImpl = new DummyDAOImpl();
JdbcTemplate jdbcTemplateObject;
@Before
public void setUp(){
jdbcTemplateObject = EasyMock.createNiceMock(JdbcTemplate.class);
dummyDAOImpl.setJdbcTemplate(jdbcTemplateObject);
}
@Test
public void testGetApplicationConfigValueReturnNonNull(){
String query = "SELECT value FROM application_configuration WHERE tag=?";
String tag = "REFRESH_INTERVAL";
EasyMock.expect(jdbcTemplateObject.queryForObject(query,new Object[] {tag}, String.class)).andReturn("12");
EasyMock.replay(jdbcTemplateObject);
Assert.assertEquals(12,dummyDAOImpl.getApplicationConfigValue(tag));
}
}
public class ConfigurationDAOImpl implements ConfigurationDAO {
private JdbcTemplate jdbcTemplateObject;
@Override
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplateObject = jdbcTemplate;
}
@Override
public int getApplicationConfigValue(String tag) {
String query = "SELECT value FROM application_configuration WHERE tag=?";
String refreshTime = jdbcTemplateObject.queryForObject(query,new Object[] {tag}, String.class);
if(refreshTime != null && !"".equals(refreshTime))
return new Integer(refreshTime);
else
return 0;
}
}
Хотя в методе testGetApplicationConfigValueReturnNonNull - Я пытаюсь дразнить его, чтобы вернуться 12, но она всегда возвращает нуль.
Первый раз, когда я внедряю EasyMock, все, что у меня отсутствует, как я уже пробовал и не смог его взломать!
С наилучшими пожеланиями, Сундаром
Анри - спасибо много помощнику, и это объясняет многое, где я ошибался, но все еще не могу понять, зачем мне это нужно. Любой документ или ссылку, чтобы пройти и узнать больше об этом? Поскольку я использовал ту же технику @Mock для класса обслуживания и все отработанные ожидали для классов DAO .. Сказал, что, делая подобное изменение, мой jdbctemplate.update не работает сейчас: (не уверен, как отформатировать код здесь, поскольку я не использую для публикации вопросы много .. – Sundar
@Test общественного недействительными updateDashboardAppRefreshConfigurationTest() { Строка запроса = "значение UPDATE application_configuration SET = WHERE тег =?"; конфигурации конфигурации = новая конфигурация(); config.setTag (ApplicationConstant.DASHBOARD_APP_REFRESH_INTERVAL. getValue()) ;; config.setRefreshInterval (20); expect (jdbcTemplateObject.update (eq (query), aryEq (новый Object [] {config.getRefreshInterval(), config.getTag()}))) иReturn (0); replayAll(); assertEquals (0, configurationDAOImpl.updateConfiguration (config)); verifyAll(); } – Sundar
Документация находится здесь http://easymock.org/user-guide.html. Если что-то не хватает, скажите мне. Мне нужна ошибка, чтобы узнать, что случилось. И я не думаю, что мы можем форматировать комментарий. Если вы хотите быть более гибкими по своим параметрам, вы можете использовать 'anyObject()' matcher. – Henri