더북(TheBook)

코드 4-2 새 책을 등록하는 테스트


import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.samePropertyValuesAs;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
import org.springframework.http.MediaType;

public class MockMvcWebTests {
 

 
    @Test
    public void postBook() throws Exception {
        mockMvc.perform(post(”/”) // POST 요청 수행
            .contentType(MediaType.APPLICATION_FORM_URLENCODED)
            .param(“title”, “BOOK TITLE”)
            .param(“author”, “BOOK AUTHOR”)
            .param(“isbn”, “1234567890”)
            .param(“description”, “DESCRIPTION”))
            .andExpect(status().is3xxRedirection())
            .andExpect(header().string(“Location”, ”/”));
 
        Book expectedBook=new Book(); // 생성할 책 정보 설정
        expectedBook.setId(1L);
        expectedBook.setReader(“craig”);
        expectedBook.setTitle(“BOOK TITLE”);
        expectedBook.setAuthor(“BOOK AUTHOR”);
        expectedBook.setIsbn(“1234567890”);
        expectedBook.setDescription(“DESCRIPTION”);
 
        mockMvc.perform(get(”/”))   // POST 요청 실행
 
            .andExpect(status().isOk())
            .andExpect(view().name(“readingList”))
            .andExpect(model().attributeExists(“books”))
            .andExpect(model().attribute(“books”, hasSize(1)))
            .andExpect(model().attribute(“books”, contains(samePropertyValuesAs
(expectedBook))));
     }
 
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.