Я пытаюсь добавить аудит объектов домена с @CreatedDate, @CreatedBy, @LastModifiedBy
и @LastModifiedDate
. Пока что это работает, но когда я пытаюсь выполнить его модульное тестирование, значения не заполняются. Это настройка.
@Data
public abstract class Auditable {
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
@CreatedDate
private DateTime createdDate;
@CreatedBy
private String createdBy;
@LastModifiedBy
private String lastModifiedBy;
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
@LastModifiedDate
private DateTime lastModifiedDate;
@Version
private long version;
}
Реализация AuditorAware по умолчанию
@Component
public class DefaultAuditorAware implements AuditorAware<String> {
@Override
public Optional<String> getCurrentAuditor() {
// obtain auditorId
return Optional.of(auditorId);
}
}
Мои домены выглядят тогда как
Document(collection = "books")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Book extends Auditable {
..
}
, а основной класс аннотирован с @EnableMongoAuditing
Это работает до сих пор, и значения заполняются. Однако, когда я пытаюсь выполнить модульное тестирование, значения не заполняются, а остаются пустыми. Я не уверен, чего мне не хватает. Вот пример теста
@RunWith(SpringRunner.class)
public class DefaultBookServiceUnitTest {
@InjectMocks
BookService bookService;
@Mock
BookRepository bookRepositoryMock;
@Test
public void createBook_success() {
Book newBook = buildBook();
when(bookRepositoryMock.save(newBook)).thenReturn(newBook);
// WHEN
Listing createdBook = bookService.createBook(newBook);
// THEN
//different assertions
// Assertions which fail
Assert.notNull(createdBook.getCreatedBy(), "Created by cannot be null");
Assert.notNull(createdBook.getCreatedDate(), "Book created date cannot be null");
Assert.notNull(createdBook.getLastModifiedDate(), "Book last modified date cannot be null");
Assert.notNull(createdBook.getLastModifiedBy(), "Modified by cannot be null");
assertTrue("Book last modified date and created date have to match", createdBook.getLastModifiedDate().equals(createdBook.getCreatedDate()));
} }