Cześć, piszę Api Restowe w Spring Boot i chciałbym je przetestować. Na tym forum spotkałem się już z kilkoma szkołami, gdzie np. testujemy każdą linijkę kodu lub gdzie testujemy tylko warstwę logiki biznesowej. W moim projekcie zamiast warstwy serwisów zrobiłem sobie tak jak poleca Uncle Bob warstwę UseCasów - gdzie każdy z nich odpowiada określonemu zadaniu w aplikacji i nie łamie zasady pojedynczej odpowiedzialności, np. GetUsers, AddPost, PrintRaport .. itd. Każdy z tych obiektów posiada własny obiekt zapytania, który jest oczywiście tworzony w kontrolerze na podstawie parametrów zapytania. Wszystko fajnie działa, usecasy nie są przerośnięte jak serwisy i ok.
I teraz tak, chciałbym testować każdy z tych usecasów. Wpadłem na pomysł, że będę wstrzykiwał realne obiekty DAO ( rozszerzane JpaRepository ) i dla testu będę podmieniał za pomocą @ActiveProfiles bazę danych na testową, napiszę sobie jakiś filler do bazy danych tak, żebym mógł sprawdzać te use casy na realnych rzeczach w bazie. Niestety nie mogę wstrzyknąć nic do tego testu przez autowired. Tzn mogę, ale tam nulle są.
Pytanie do Was po pierwsze takie, jak mogę wstrzyknąć coś do testu, a druga sprawa czy mój pomysł na testowanie jest dobry. Bo np będę chciał sobie wytestować AddPost, no to muszę dodać realnie do bazy danych obiekt i potem sprawdzić czy to co dodano jest tym samym co chciałem żeby dodano.
Pozdrawiam