Я хотел бы проверить этот метод DAOMockito тест DAO с издевался объектов
//in GrabDao.java
public WrapperProject getChildren(Integer entityId, String entityType){
EntityDao entityDao = new EntityDao();
UserDao userDao = new UserDao();
EntityBase entity = entityDao.getEntityById(entityId, entityType);
Date dateProjet = userDao.getOrganismeFromSession().getExercice().getDateProjet();
return new Wrapper(dateProjet, entity);
}
Это то, что я пытался до сих пор
//in GrabDaoTest.java
Integer paramEntityId = 1;
String paramEntityType = "type";
EntityBase entityBase = Mockito.mock(EntityBase.class);
EntityDao entityDao = Mockito.mock(EntityDao.class);
when(entityDao.getEntityById(paramEntityId, paramEntityType)).thenReturn(entityBase);
UserDao userDao = Mockito.mock(UserDao.class);
Organisme organisme = Mockito.mock(Organisme.class);
Exercice excercice = Mockito.mock(Exercice.class);
when(userDao.getOrganismeFromSession()).thenReturn(organisme);
when(organisme.getExercice()).thenReturn(excercice);
when(userDao.getOrganismeFromSession().getExercice().getDateProjet()).thenReturn(new GregorianCalendar(2000, 01, 01).getTime());
Теперь я хотел бы, чтобы проверить, что GetChildren с поддельными параметрами paramEntityId и paramEntityType будет правильно возвращать WrapperProject 1 и 01/01/2000 с использованием издевавшихся методов, но я не могу понял, как запустить метод чтения говоря ей, чтобы использовать Передразнивало DAO
Спасибо, вы правы, я буду смотреть на них и полностью опубликовать мой последний рабочий ответ здесь – Max
я соглашайтесь с MariuszS здесь. В [моей статье о Mockito wiki] (http://code.google.com/p/mockito/wiki/MockingObjectCreation) я упоминаю несколько способов использования Mockito для проверки кода, который создает новые объекты. Быстро посмотрите и посмотрите, может ли любой из них быть полезен здесь. –
Не было бы правильнее сказать, что Mockito просто не поддерживает насмешку над «новыми» объектами? Потому что, если бы это было возможно (что вполне возможно), метод getChildren был бы легко проверен как есть. И DI не способ заменить использование 'new'; это способ «отделить конфигурацию от использования», что, похоже, не здесь. –