Ниже приведен мой тестовый код с использованием JUnit Mockito:
@Before
public void preSetup() throws Exception {
AuditTrail auditTrail = new AuditTrail();
auditTrail.setEventType(1);
auditTrail.setEventDetail("play");
auditTrail.setEventDate(new Date());
Mockito.doReturn(auditTrail).when(auditService).addAuditTrail(auditTrail);
}
@Test
public void testaddPlayAuditRecord() {
boolean value = auditService.addPlayAuditRecord();
assertEquals(true, value);
}
И мой сервис выглядит следующим образом:
@Override
public boolean addPlayAuditRecord() {
return addAuditRecord(1,"play");
}
@Override
public boolean addDeleteAuditRecord() {
return addAuditRecord(2,"delete");
}
@Override
public boolean addSearchAuditRecord() {
return addAuditRecord(3,"search");
}
private boolean addAuditRecord(String eventType, String eventDetail) {
AuditTrail auditTrail = new AuditTrail();
auditTrail.setEventType(eventType);
auditTrail.setEventDetail(eventDetail);
auditTrail.setEventDate(new Date());
AuditTrail obj = auditService.addAuditTrail(auditTrail);
}
auditService.addAuditTrail (auditTrail) делаетвызов базы данных, который я хочу смоделировать и вернуть объект со значениями по моему выбору.
Но этот объект auditTrail построен на значениях, которые зависят от того, какой метод его вызывает.Они различаются в зависимости от того, какой метод вызывает метод addAuditRecord.Также мы используем new Date (), чтобы получить объект текущей даты.Таким образом, дата, которую я буду использовать в тесте, будет отличаться от той, что я буду использовать в addAuditRecord, так как дата является текущей датой.
Итак, как в моем тестовом файле как насмехаться над этим методом addAuditTrail?Можно ли сделать такое издевательство в методе @Before?Переданный здесь объект auditTrail должен соответствовать объекту, который фактически создан в методе addAuditRecord.
Как мне это сделать?