Spring Boot 게시판 만들기 5 - 모든 Post 가져오기

5. 모든 포스트 가져오기

모든 포스트 가져오기 요청 처리하기

BoardController.java

@Controller
@RequiredArgsConstructor
public class BoardController {
private final PostService postService;

@GetMapping("/")
public String board(Model model){
List<Post> posts = postService.getAllPost();
model.addAttribute("PostList", posts);
return "board";
}
}

모든 Post 가져오기 요청에 대한 테스트 코드 작성

BoardControllerTest.java

@WebMvcTest
class BoardControllerTest {

@Autowired
private MockMvc mockMvc;

@MockBean
private PostService postService;

@Test
@DisplayName("모든 Post를 가져온다.")
public void board() throws Exception {
List<Post> posts = new ArrayList<>();
posts.add(Post.builder()
.id(1L)
.title("test")
.name("tester")
.content("test")
.writeTime(LocalDateTime.now())
.build()
);

given(postService.getAllPost()).willReturn(posts);

ResultActions resultActions = mockMvc.perform(get("/"));

resultActions
.andExpect(status().isOk())
.andDo(print());

verify(postService).getAllPost();
}
}

데이터 조회

@Service
@RequiredArgsConstructor
public class PostService {
private final PostRepository postRepository;

public Post addPost(Post newPost) {
return postRepository.save(newPost);
}

public List<Post> getAllPost() {
return postRepository.findAll();
}
}

데이터 조회에 대한 테스트 코드 작성

@Test
@DisplayName("모든 포스트를 가져온다.")
public void getAllPosts() {
List<Post> mockPosts = new ArrayList<>();
mockPosts.add(Post.builder()
.id(1L)
.title("test")
.name("tester")
.content("test")
.writeTime(LocalDateTime.now())
.build()
);

given(postRepository.findAll()).willReturn(mockPosts);

List<Post> posts = postService.getAllPosts();

verify(postRepository).findAll();

Post post = posts.get(0);
assertThat(post.getId()).isEqualTo(mockPosts.get(0).getId());
assertThat(post.getTitle()).isEqualTo(mockPosts.get(0).getTitle());
assertThat(post.getName()).isEqualTo(mockPosts.get(0).getName());
assertThat(post.getContent()).isEqualTo(mockPosts.get(0).getContent());
assertThat(post.getWriteTime()).isEqualTo(mockPosts.get(0).getWriteTime());

}
Share