Aktywne Wpisy
xionacz +1676
Malenaa +61
Rzuciła mnie przez SMS xD szybko poszło
#zwiazki #p0lka #logikarozowychpaskow #logikaniebieskichpaskow
#zwiazki #p0lka #logikarozowychpaskow #logikaniebieskichpaskow
Skopiuj link
Skopiuj linkWykop.pl
kod
#java #junit #testyjednostkowe #naukaprogramowania
I aby testy były czytelniejsze, możesz użyć biblioteki Truth do asercji, są dużo lepsze niż teg junitowe.
Czym w tym serwisie jest w ogóle 'Activity'? Czemu VoteType jest enumem, a i tak do porównywania wartości używasz stringów?
@Cheessys: ale używasz pewnie jakiegoś ORM?
Co do kodu, to po co Ci serwis mutujący obiekty, gdzie one same mogą to robić - Activity.vote(vote)
chciałeś napisać implementują interfejs Activity?
Zeby nie powtarzac tego w 4 klasach
nie
@cypo:
https://www.yegor256.com/2014/05/05/oop-alternative-to-utility-classes.html
Z dziedziczeniem też trzeba uważać, sprawdź sobie temat "Composition over inheritance". Jeszcze więcej szczegółów znajdziesz pod hasłem DDD.
Ja bym to rozdzielił - jest np (teoretycznie). Activity: artykuł, komentarz. To są oddzielne odpowiedzialności. Głosowanie może być na wybrany obiekt, więc vote = voteRepository.for(activity) a potem vote.apply(voteCommand). Wtedy głosowanie nie rusza obiektu treści, który jest już utrwalony i nie musi
W sumie doczytując testy da się chyba ogarnąć use-case jaki masz. Spojrzę
Odnośnie tematu testów, pomijając powyższe dywagacje.
void addVoteUp() zmieniony:
@Test
addVote_shouldVoteUp() { // co testujemy, jaki jest cel testu
//given // podział na bloki: ustawienie stanu, uruchomienie akcji, weryfikacja wyników/stanu końcowego
vote.setVoteType(VoteType.VOTE_UP.toString());
//when
Activity result = voteService.addVote(article, vote);
//then
Assert.assertEquals(1, result.getVotes());
}