Wpis z mikrobloga

#programowanie #java
Hej Cumple, uczę się pisać testy jednostkowe i mam pytanie, jak zweryfikować poprawnie czy obiekt został usunięty - w moim przypadku z dashboarda a nie z bazy danych. Usuwa na pewno bo w ramach sprawdzenia zmieniłem na chwilę metodę z void na listę obiektów i była pusta kiedy debugowałem. Nie wiem natomiast jak to poprawnie zapisać w metodzie testowej, do tej pory testowałem metody, które coś zwracały więc sobie radziłem. Kod: https://paste.ofcode.org/T5scExs8pgGdxkQV9zidD8
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Dominias: times(1) to domyślne zachowanie. Ale poza tym, to ok.

Generalnie jest zasada, że powinieneś testować stan, a nie zachowania. Nie zawsze jest to jednak możliwe - jeśli masz tutaj jak sprawdzić, czy danego obiektu nie ma w bazie, to tak zrób, jeśli nie, to zostaw tak, jak kolega wyżej napisał (bez tego times).
  • Odpowiedz
@fegwegw: gdzie ta sprzeczność?

A interakcje z bazą oczywiście należy mockować, tylko w takim przypadku nie będzie możliwości, tak jak pisałeś, sprawdzać czy wpis znajduje się w bazie
  • Odpowiedz
@Dominias: źle, Ty w tym momencie testujesz framework:

activitiesServiceMock.addTrainingCycle(userId,getTrainingCycle(),LocalDate.now());
verify(activitiesServiceMock).addTrainingCycle(userId,getTrainingCycle(),LocalDate.now());

w drugiej linijce sprawdzasz to, co wywołałej
  • Odpowiedz
@fegwegw: właśnie też myślałem, że to wina czasu bo wcześniej miałem w klasie TrainingCycle pole typu LocalDateTime, zmieniłem na LocalDate więc powinno się zgadzać bo to tylko dzień bez godzin bierze pod uwagę, błąd jest taki:

Argument(s) are different! Wanted:
activitiesServiceMock.addTrainingCycle(
  • Odpowiedz