• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Mockowanie a testowanie.

VPS Starter Arubacloud
+1 głos
450 wizyt
pytanie zadane 16 lipca 2018 w Java przez Aisekai Nałogowiec (42,190 p.)

Jak w Spring Boocie testować metody które pobierają dane z bazy danych?

Załóżmy taką sytuację:

@Service
class BooService{
         private BooRepository booRepository;

            public void someMethod(){
            List<Boo> booList = booRepository.findAll();
            //wykorzystanie tej listy.
            }
            
         //Autowired by constructor
}

Mockowanie BooRepository sensu nie ma. Zastanawiam się, nad utworzeniem klasy implementującą interfejs BooRepository i shardkodować jakąś bazę danych i porzucić mockowanie, tylko "problem" jest taki, że trzeba byłoby wtedy zaimplementować (nawet jeśli byłyby to metody niemające sensu np. metoda findById() by zwracała jakikolwiek obiekt). Czy jest to dobre rozwiązanie? Czy jeśli (przy większej aplikacji) miałbym do przetestowania więcej klas, zwłaszcza te które się w jakikolwiek sposób z bazą danych łączą (mockowanie nie byłoby możliwe), musiałbym tworzyć dodatkowe klasy-bazy danych?

1 odpowiedź

+1 głos
odpowiedź 17 lipca 2018 przez niezalogowany
wybrane 17 lipca 2018 przez Aisekai
 
Najlepsza

Cześć, a może zrobić to tak, że będziesz miał zwykłe repo i repo tak zwane `in memory` (do testów). Zwykłe repo byłoby po prostu do bazy danych a repo `in memory` zapisywałoby dane lokalnie (np. tablice). Jak to by działało? Tworzysz jeden interfejs, i dwie klasy które go implementują -> główne repo i in memory. Teraz za każdym razem jak potrzebujesz sie dostać do repo głównego albo in memory to wstawiasz ten interfejs. Powstaje pytanie jak system na poznać, o które repo ci chodzi? Da się to zrobic za pomocą Dependency_injection, Aplikacja będzie wstrzykiwać albo twoje repo główne albo to in memory, w zależności od tego czy to będą testy czy już działająca aplikacja. Takie rozwiązanie widziałem w komercyjnym projekcie.

komentarz 17 lipca 2018 przez Aisekai Nałogowiec (42,190 p.)
Dokładnie to miałem na myśli pisząc ten temat, myślałem że jest jakis inny sposób na poradzenie sobie z tym, tylko "problem" pojawia sie taki, jaki wymieniłem w temacie. Ale chyba i tak zrobie tak jak mówisz.
komentarz 18 lipca 2018 przez Aisekai Nałogowiec (42,190 p.)
Rozwiązałem to, przez użycie Mockowania, a konkretnie metod when() i thenReturn() - duża zaleta mockowania której dotąd, nie znałem. Fake'ową bazę zrobiłem jako listę obiektów.
komentarz 18 lipca 2018 przez niezalogowany
No i super :D

Podobne pytania

0 głosów
1 odpowiedź 400 wizyt
pytanie zadane 15 kwietnia 2022 w JavaScript przez Bakkit Dyskutant (7,600 p.)
+2 głosów
1 odpowiedź 234 wizyt
pytanie zadane 9 kwietnia 2022 w JavaScript przez Bakkit Dyskutant (7,600 p.)
0 głosów
2 odpowiedzi 475 wizyt
pytanie zadane 12 grudnia 2018 w Java przez must Bywalec (2,980 p.)

92,453 zapytań

141,262 odpowiedzi

319,087 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...