Wpis z mikrobloga

Mirky z #java #spring i trochu #testowanieoprogramowania
Jak podchodzicie do (integracyjnego?) testowania pojedynczych kontrolerów gdy potrzebna jest jakaś relacja w bazie danych?
Przykładowa sytuacja:

Chcę przetestować wysłanie requestu, który zapisuje psa, ale pies ma ID schroniska (no i relacje w bazie)

I teraz jest problem z dodaniem schroniska, widziałem w sumie 3 podejścia
1) Próba wysłania wcześniej innego requestu zapisującego schronisko (wincyj roboty i kłopotów, ale naturalny flow)
2) Użycie serwisu, który cośtam mieli i zapisuje do bazy
3) Zrobienie utilsów które bezpośrednio zapisują do bazy (mieszanie poziomów abstrakcji i ominięcie flow, ale najłatwiej chyba)

Jakie wy preferujecie, z czym jeszcze się spotkaliście? A może taki test ni ma w ogóle sensu i lepiej zamokować bazę, a wszystko sprawdzić dopiero w e2e?
#programowanie
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ldefix:
Proponuję trzymać się takiej klasyfikacji testów:
- mockowanie bazy => test jednostkowy
- prawdziwa baza => test integracyjny
przy czym "jednostka" to nie musi być koniecznie klasa, a może być jakoś współpracujący ze sobą "komponent" składający się z kilku klas.
  • Odpowiedz
@ldefix: a co pytania xD

To imho to opcja 1 najlepiej odda stan prawdziwej aplikacji, tyle tylko że nie męczyłbym się z wysyłaniem requesta, a jedynie zawołaniem albo odpowiedniej metody z controllera w Given lub @Before albo wołał ją przez mockMvc.

Dodanie tego jako coś
  • Odpowiedz
Próba wysłania wcześniej innego requestu zapisującego schronisko (wincyj roboty i kłopotów, ale naturalny flow)


@ldefix: przecież podczas testu, o ile ten request nie jest do jakiegoś zewnętrznego api nie powinieneś wołać requestów w obrębie jednej aplikacji(gdze frontend np w angularze i backend w javie bym rozdzielił jako oddzielne aplikacje), przecież jest to totalnie bez potrzeby a w dodatku wydłuża czas trwania takich testów
  • Odpowiedz