교육때 들었었던 인스타 id를 기반하여 익명호감표시 하는 개인프로젝트를 다시한번 하면서 전에는 만드느라 급급했던 내용들을 이해하는 과정을 거쳐보자.
DROP DATABASE IF EXISTS gram__dev;
CREATE DATABASE gram__dev;
USE gram__dev;
spring:
profiles:
active: dev
datasource:
driver-class-name: org.mariadb.jdbc.Driver
url: jdbc:mariadb://127.0.0.1:3306/gram__dev?useUnicode=true&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Seoul
username: root
password:
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
show_sql: true
format_sql: true
use_sql_comments: true
logging:
level:
root: INFO
com.ll.gramgram_ai: DEBUG
org.hibernate.orm.jdbc.bind: TRACE
org.hibernate.orm.jdbc.extract: TRACE
@Controller
@RequestMapping("/member")
@RequiredArgsConstructor
public class MemberController {
@GetMapping("/join")
public String join(){
return "user/member/join";
}
}
연결될 곳이 어딘지 먼저 만들기
@SpringBootTest
@AutoConfigureMockMvc
@Transactional
@ActiveProfiles("test")
class MemberControllerTest {
@Autowired
private MockMvc mvc;
@Test
@DisplayName("회원가입 폼")
void t1() throws Exception {
ResultActions resultActions = mvc.perform(get("/member/join"))
.andDo(print());
//검증
resultActions.andExpect(handler().handlerType(MemberController.class))
.andExpect(handler().methodName("join"))
.andExpect(MockMvcResultMatchers.status().is2xxSuccessful());
}
@Test
@DisplayName("회원가입 진행")
void t2() throws Exception {
ResultActions resultActions = mvc.perform(post("/member/join")
.with(csrf())
.param("username", "user10")
.param("password", "1234"))
.andDo(print());
resultActions.andExpect(handler().handlerType(MemberController.class))
.andExpect(handler().methodName("join"))
.andExpect(status().is2xxSuccessful());
}
}
@SpringBootTest + @AutoConfigureMockMvc
프로젝트 내부에 있는 스프링 빈을 모두 등록하여 테스트에 필요한 의존성을 추가
t2의 경우 먼저 필요로 해보이는 값들을 통해서 테스트를 만들어서 현재는 Member 객체와 폼 post등을 만들지 않아서 실패하는 테스트를 하나 만들어둔다.
참고 블로그 : https://goddaehee.tistory.com/211?category=367461
참고 문헌 : https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.testing