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
@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.
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.
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
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
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.
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ś
@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