코딩하는 털보

11 to 9, Day 4 본문

Diary/Eleven to Nine

11 to 9, Day 4

이정인 2021. 2. 24. 21:03

11 to 9, Day 4

Today, ToDoList

  • 자바 라이브 스터디

    • 14주차 공부 마무리

Toy Project - NGMA

  • 테스트 코드 작성

14주차 공부 마무리

드디어 마무리 하고 포스팅 완료~

https://rockintuna.tistory.com/102


테스트 코드

application.properties

왠지 테스트가 mysql에서 돌더니 진작에 했어야 했는데 이제서야 찾아서 test/resources 에 새로운 application.properties 추가해서 테스트는 H2 DB에서 실행되도록 변경하였다.

Schedule Controller 테스트 코드

@SpringBootTest
@AutoConfigureMockMvc
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
class ScheduleControllerTest {

    @Autowired
    private MockMvc mvc;

    @Autowired
    private AccountService accountService;

    @Autowired
    private ScheduleService scheduleService;

    @Autowired
    private ObjectMapper objectMapper;

    @BeforeAll
    private void setUp() {

        Account account = new Account();
        account.setEmail("jilee@example.com");
        account.setPassword("jilee");
        Account newAccount = accountService.registerAccount(account);

        Schedule schedule = new Schedule();
        schedule.setTitle("book");
        schedule.setOwner(account);

        Schedule schedule2 = new Schedule();
        schedule2.setTitle("cafe");
        schedule2.setOwner(account);

        scheduleService.createSchedule(schedule, newAccount);
        scheduleService.createSchedule(schedule2, newAccount);
    }

    @Test
    @WithUserDetails(value = "jilee@example.com")
    public void getSchedules() throws Exception {
        mvc.perform(MockMvcRequestBuilders.get("/schedules")).andDo(print())
                .andExpect(status().isOk())
                .andExpect(authenticated())
                .andExpect(content().contentType(MediaType.APPLICATION_JSON))
                .andExpect(content().string(containsString("cafe")));
    }

    @Test
    @WithUserDetails(value = "jilee@example.com")
    public void createSchedule() throws Exception {
        Schedule schedule = new Schedule();
        schedule.setTitle("cook");
        Account account = accountService.getUserByEmail("jilee@example.com").orElse(null);
        schedule.setOwner(account);

        mvc.perform(post("/schedule")
                .param("title", "cook"))
                .andDo(print())
                .andExpect(status().isOk());

        assertThat(scheduleService.getOurSchedules(account.getId())
                .size()).isEqualTo(3);
        assertThat(scheduleService.getOurSchedules(account.getId())
                .get(2).getTitle()).isEqualTo("cook");
    }

    @Test
    public void createScheduleWithoutAuth() throws Exception {
        mvc.perform(post("/schedule")
                .param("title", "cook"))
                .andDo(print())
                .andExpect(status().isUnauthorized());
    }
}

User Controller 테스트 코드 작성중 막혀서 내일부터 진행할듯하다.

Comments