@Autowired
private BoardRepository boardRepository;
필드에 직접 넣어서 하는 방법은 좋지 않고, 닫혀있는 방식을 사용하는것이 맞으며, 생성자를 통해 만들어 사용하는것이 좋다.
@SpringBootTest
@AutoConfigureMockMvc
class BoardControllerTest {
@Autowired
private MockMvc mockMvc;
//..
매번 전체 테스트 save를 진행했을때, 점점 size에 대한 기댓값이비교하는것에대해 어려워지는 부분이 있다. 각각의 테스트는 다른 테스트의 영향을 주면 안된다.
그럼 어떤 방식을 사용해야할까?
직접 delete를 해줘야하나? 그건 너무 신경을 많이 써야하기때문에 별로인 방식이다.
각각의 테스트를 clean하게 하려면!!?
@BeforeEach
void clean(){
boardRepository.deleteAll();
}
@Test
@DisplayName("/postss 요청시 DB에 값이 저장된다.")
void test3() throws Exception {
//when
mockMvc.perform(MockMvcRequestBuilders.post("/postss")
.contentType(MediaType.APPLICATION_JSON)
.content("{\\"title\\": \\"이은성\\" , \\"content\\": \\"내용입니다.\\"}")
)
.andExpect(status().isOk())
.andDo(print());
//then
assertThat(boardRepository.count()).isEqualTo(1);
Board board = boardRepository.findAll().get(0);
assertThat(board.getTitle()).isEqualTo("이은성");
assertThat(board.getContent()).isEqualTo("내용입니다.");
}