반응형
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles("test")
@FixMethodOrder(MethodSorters.NAME_ASCENDING) //실행 순서를 메소드 명 순서로 고정
public class SignControllerTest {
/*
**회원가입 콘트롤러 테스트코드 (응답이 내가 원하는 형태로 오는지 테스트함)**
**[ 내 목표 ]**
- 로그인 되나
- 필수 인자가 없이 회원가입을 하면 500에러가 나는가
*/
@Autowired
private MockMvc mockMvc;
/*
실제 객체와 비슷하지만 테스트에 필요한 기능만 가지는 가짜 객체를 만들어서
애플리케이션 서버에 배포하지 않고도 스프링 MVC 동작을 재현할 수 있다.
*/
@Before // 원래 이렇게 안하는데 갑자기 테스트용 디비 sql 이 꼬여서.. before 어노테이션으로 회원가입해봅시다.
public void signup() throws Exception {
final MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("userEmail", "test@test.com");
params.add("password", "password");
params.add("mobilePhoneNumber", "01084");
mockMvc.perform(post("/signup")
.params(params)).andExpect(status().isOk());
}
@Test
public void signupFailByLackRequestParam() throws Exception {
final MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("userEmail", "test2@test.com");
// params.add("password", "password"); 필수인자 x
params.add("mobilePhoneNumber", "0100000000");
mockMvc.perform(post("/signup")
.params(params)).andExpect(status().isInternalServerError());
}
@Test
public void login() throws Exception {
MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
params.add("userEmail", "test@test.com");
params.add("password", "password");
mockMvc.perform(post("/login").params(params))
.andDo(print())
.andExpect(status().isOk()) // 응답을 검증하는 역할
.andExpect(jsonPath("$.msg").exists())
.andExpect(jsonPath("$.data").exists())
.andReturn();
}
}
반응형
'스프링, 자바' 카테고리의 다른 글
3주차 과제: 연산자 (백기선 라이브 스터디 3주차 ) (0) | 2020.11.22 |
---|---|
mvc 아키텍처 (0) | 2020.11.18 |
타임리프 찾아본 로그 (0) | 2020.11.16 |
자바 데이터 타입, 변수 그리고 배열 (0) | 2020.11.15 |
자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기 (0) | 2020.11.15 |