* 코로나 줄서기 프로젝트 활용
@SpringBootTest
기본 에플리케이션 context load(통합 test시 사용)
bootstrap with + extendwith
value와 properties = {}로 직접 설정.
args -> 직접 실행하는 command .
WebEnvironment.Mock,None(은 tomcat이 실제로 돌지 않음)
.RANDOM_PORT,DEFINED_PORT는 직접 TOMCAT이 돈다.
스프링에서 제공하는 Auto-configured Test
한 가지 예시
@WebMvcTest . mockmvc 빈을 자동 설정하고 사용한다.
(복습하자, mock mvc는 마치 http가 request한것처럼 따라하는 역할을 한다.)
일단 perform은, exception을 전송하는 method에서 가능하다.
mockmvc를 통해서, 마치 "/" Request가 들어온것처럼 행동한다.
그리고 그 값들을 expect하여, 이에 따라 출력한다
(test)를 꼭 붙여 method이름을 지키고, Exception을 던져 perform한다. 실 method와 이름을 변경한다.
perform이 이해가 안가서 찾아봤더니, exception을 던진다는 것을 깨달았다.
즉 perform은, 이후 내용이 말이 안된다면 exception을 던진다.
이러한 방식도 junit4부터 가능
@AutoConfigureMockMvc
@SpringBootTest
class BaseControllerTest {
/* @Autowired
private MockMvc mvc ;*/
@Test
void testRoot(@Autowired MockMvc mvc) throws Exception
{
//given
//when
//then
mvc.perform(MockMvcRequestBuilders.get("/"))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.TEXT_HTML_VALUE + ";charset=UTF-8"))
.andExpect(content().string(Matchers.containsString("ㅎㅇindex야")))
.andExpect(view().name("index"))
.andDo(print()) ;
}
}
이 꼴을 가장 많이 활용할 것이다.
given(Repository.respotiroymethod(~~).willReturn(false);
given이란 method를 통해, 뜩정 repository의 method가 실행되었다면. 그것이 willreturn(이 형태를 받을 것입니다).
### 까먹으면 진짜 안되는 성질
valid를 진행하다가 .. @valid를 사용하면 내가 정한 exception보다 먼저 exception을 발생시킨다는 것을 잊고 있었다..
이걸 찾는데 굉장히 오래 걸렸다.