Copy @ SpringBootTest
public class DemoApplicationTests {
private MockMvc mvc;
@ Before
public void setUp () {
mvc = MockMvcBuilders . standaloneSetup ( new HelloController() ) . build ();
}
@ Test
public void getHello () throws Exception {
mvc . perform ( MockMvcRequestBuilders . get ( "/hello" ) . accept ( MediaType . APPLICATION_JSON ))
. andExpect ( status() . isOk ())
. andExpect ( content() . string ( equalTo( "Hello World" ) ));
}
}
Copy @ SpringBootTest (classes = FileUploadDemoApplication . class )
public class FileTest {
@ Autowired
protected WebApplicationContext context;
protected MockMvc mvc;
@ BeforeEach
public void setUp () {
mvc = MockMvcBuilders . webAppContextSetup (context) . build ();
}
@ Test
public void uploadFile () throws Exception {
MockMultipartFile file = new MockMultipartFile(
"file" ,
"hello.txt" ,
MediaType . TEXT_PLAIN_VALUE ,
"Hello, World!" . getBytes()
) ;
final MvcResult result = mvc . perform (
MockMvcRequestBuilders
. multipart ( "/upload" )
. file (file))
. andDo ( print() )
. andExpect ( status() . isOk ())
. andReturn ();
}
}
여기서 핵심은 MockMvc tool 사용이다. 희망하는 http 전송 후 리턴 결과를 지정한다. 사실 upload 파일도 http 통신을 진행한다. 때문에 MockMvc 를 사용하는건 변함없다. 단지 upload 라는 data가 바뀌였을뿐이다. 동일하게 받고 싶은 데이터 (파일 유형을 ) 직접 지정할수 있다.