Cześć. Spotkałem się tutaj wiele razy ze zdaniem, że nie ma sensu testować za pomocą verify z mockito czy dana metoda się wywołała, ewentualnie ile razy.
Miałem rozmowę o pracę, gdzie rekruter mocno się upierał, że trzeba przetestować czy na pewno jakaś metoda wewnątrz testowanej metody się wywołała i to z odpowiednimi argumentami.
Do tej pory sam stosuję BDD i w sumie mam taką zagwozdkę:
Jeśli jakaś metoda serwisowa pobiera encje, wykonuje na niej jakąś logikę i z powrotem zapisuje do repo, a następnie zwraca encje po zapisaniu to ja do tej pory po prostu testowałem czy ta zwrócona encja ma oczekiwany stan. Ewentualnie lepiej można tą encję wyciągnąć z bazy za pomocą id i ją przetestować, ale jeśli się robi CQRSa to jest troszkę problem.
I w sumie takie testowanie BDD to jest trochę dawanie zaufania, że metoda w środku naprawdę wykonuje tego save do bazy, bo samo testowanie wyjścia metody nam tego nie sprawdzi przecież. Mogę w testach integracyjnych teoretycznie po wykonaniu takiej metody sprawdzić przez jakiś findById czy mi da zmofyfikowaną encję, ale co w przypadku, kiedy moje webowe api nie odostępnia metody szukania danej encji po id ? Czy w tym wypadku zostaje naprawdę Mockito.verify na poziomie testów jednostkowych czy po prostu ufamy na ślepo, że metoda jednak zapisuje coś do bazy ?