Witajcie,
Napotkałem na problem podczas mockowania metody. Poniżej mój kod
@Test
public void shouldAddPost() {
String content = "content";
Integer id = 1;
sut.reply(content, id);
verify(postService, times(1)).addPost(eq(id), eq(principal.getUsername()), any(Post.class));
}
public void addPost(Integer topicId, String username, Post post) {
User u = this.userService.getUser(username);
Topic t = this.topicRepository.findOneById(topicId);
t.addPost(post);
u.addPost(post);
this.userService.save(u);
this.topicRepository.save(t);
}
@Override
public int hashCode() {
int result = topic.hashCode();
result = 31 * result + date.hashCode();
result = 31 * result + message.hashCode();
return result;
}
Wyjątek zostaje wyrzucony dla tego ponieważ zmienna topic ma wartość null. Podczas normalnego działania kodu (nie testowania) wartość tej zmiennej powinna zostać ustawiona w metodzie addPost dla obiektu Topic. Dziwi mnie dlaczego metoda hashCode jest w ogóle wykonywana, ponieważ na bład napotykam w linii
verify(postService, times(1)).addPost(eq(id), eq(principal.getUsername()), any(Post.class));
Mój wyjątek:
java.lang.NullPointerException
at pl.zaprogramowany.cms.entity.Post.hashCode(Post.java:122)
Jak temu zaradzić?