Как провести модульное тестирование проверяемых полей в spring-mongodb? - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь добавить аудит объектов домена с @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()));


    } }
...