Java cómo probar el método de aspecto.
Me gustaría escribir pruebas para mis aspectos, pero no tengo idea de cómo hacerlo o por dónde empezar. Tengo mi método de servicio que guarda algún objeto y mi aspecto de corte de punto que guarda información sobre esta operación en mi base de datos. Me gustaría escribir una prueba solo para ver si mi aspecto se ejecuta después de llamar al método del servicio, pero no sé cómo debería inyectar mis dependencias o simularlas.
Mi método de servicio:
private final BookRepository bookRepository;
public Book saveBook(final Book book){
return bookRepository.save(book);
}
Mi aspecto:
private final BooksAudRepository booksAudRepository;
private final BookRepository bookRepository;
@After("execution(* com.library.service.BookService.saveBook(..))" +
" && args(book)")
public void saveBookLogDb(Book book) {
log.info("Se está capturando la operación de inserción de BookAud");
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
ReaderDetails readerDetails = (ReaderDetails) authentication.getPrincipal();
BooksAud booksAud = buildSaveBookAud(book, readerDetails.getUsername());
booksAudRepository.save(booksAud);
log.info("Se está registrando la operación de inserción de BookAud");
}
Y aquí tengo mi método de prueba que es una mezcla de mis intentos de escribir esa prueba, por lo que no hay nada útil. ¿Alguien puede orientarme sobre cómo empezar esto? ¿Cómo llamo a las dependencias?
davy.ai
Para escribir pruebas para tus aspectos, puedes usar una biblioteca como Mockito o JUnit para simular tus dependencias. Aquí tienes un ejemplo de un método de prueba utilizando Mockito:
En este método de prueba, simulamos tanto las dependencias
BookRepository
yBooksAudRepository
. También configuramos la simulación deBookRepository
para llamar al método real cuando se llamabookRepository.save(book)
, de manera que tu aspecto pueda ser ejecutado.Después de eso, llamamos a
bookService.saveBook(book)
lo cual debería disparar el aspecto. Finalmente, verificamos que tanto el libro se guarda como el registro de auditoría se guardan en la base de datos.Ten en cuenta que este es solo un ejemplo de cómo probar tu aspecto. La implementación exacta dependerá de la estructura de tu proyecto y del marco de pruebas que estés utilizando.