Я хочу издеваться над классом Дао, когда объект содержит определенные c значения. Например, я хочу смоделировать вызов базы данных, когда userlist.getStatus == UserlistStatus.DONE
Если прикреплен фрагмент кода.
Мой код приложения выглядит следующим образом:
UserlistBo userlistBo = userlistDao.getByIdAndPublisherId(userlistId, publisher.getId());
if (userlistBo.getStatus() == UserlistStatus.SOURCE_IN_PROGRESS && userlistStatusDto.getStatus().equalsIgnoreCase(UserlistStatus.DONE.getValue())) {
userlistBo.setStatus(UserlistStatus.DONE); // 1
userlistBo = userlistDao.save(userlistBo); // 3
}
userlistBo объект на маркере 1 выглядит следующим образом:
result = {UserlistBo@1610} "UserlistBo{id=1, name='ul-test-99-9999', status=DONE, source=SEGMENT, ruleId=1, publisherId=1, filename=filename.csv, createdById=null, lastModifiedById=null, creationTimestamp=null, lastModifiedTimestamp=null}"
, и мой тестовый код выглядит следующим образом:
expectedUserlistBo.setId(1);
expectedUserlistBo.setName("ul-test-99-9999");
expectedUserlistBo.setPublisherId(1);
expectedUserlistBo.setRuleId(1);
expectedUserlistBo.setFilename("filename.csv");
expectedUserlistBo.setSource(UserlistSource.SEGMENT);
expectedUserlistBo.setStatus(UserlistStatus.SOURCE_IN_PROGRESS);
when(userlistDao.getByIdAndPublisherId(1, publisherBo.getId())).thenReturn(expectedUserlistBo);
UserlistBo expectedUserlistStatusDoneBo = new UserlistBo();
CopyHelperBean.copy(expectedUserlistStatusDoneBo, expectedUserlistBo);
expectedUserlistStatusDoneBo.setStatus(UserlistStatus.DONE); // 2
when(userlistDao.save(expectedUserlistStatusDoneBo)).thenReturn(expectedUserlistStatusDoneBo); // 4
userlistBo на маркере 2:
result = {UserlistBo@1514} "UserlistBo{id=1, name='ul-test-99-9999', status=DONE, source=SEGMENT, ruleId=1, publisherId=1, filename=filename.csv, createdById=null, lastModifiedById=null, creationTimestamp=null, lastModifiedTimestamp=null}"
Поскольку эти два разных объекта с одинаковыми значениями, когда тест выполняется на маркере 3, userlistBo возвращается как null
.
Как я должен насмехаться над маркером 4, поэтому, когда Dao вызывается на маркере 3, он будет верните мне expectedUserlistStatusDoneBo
вместо null
?