그램그램 - 시작

JIWOO YUN·2024년 5월 13일
0

GramGram

목록 보기
1/11
post-custom-banner
  • 교육때 들었었던 인스타 id를 기반하여 익명호감표시 하는 개인프로젝트를 다시한번 하면서 전에는 만드느라 급급했던 내용들을 이해하는 과정을 거쳐보자.

    • 익명의 사람이 내 인스타에 호감을표시한다면 기분이 좋지 않을까 싶어서 한번 만들어볼려고한다.
    • 인스타로그인 전 임시로 로그인 폼과 로그인을 진행
SQLYOG 프로그램을 통한 gramgram에 사용할 DB만들어두기.
  • root 계정으로 진행할 예정
    • 초반부 프로그램을 작성할때는 편의성을 위해서 root로 많이 작성을 한다고 해서 root 계정으로 진행후에 나중에 배포를 하게 될 경우 root계정에서 유저계정으로 바꾸던가 할 예정
DROP DATABASE IF EXISTS gram__dev;
CREATE DATABASE gram__dev;
USE gram__dev;
  • 만약 같은 데이터베이스인 gram__dev 가 존재한다면 DROP을 통해서 데이터베이스를 지워준다.
  • gram__dev를 만든 뒤 use를 통해서 해당 데이터베이스를 선택

DB 세팅

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";
    }
}

연결될 곳이 어딘지 먼저 만들기

  • 템플릿의 user/member 폴더에 있는 join.html으로 연결 예정

MockMvc 를 통한 테스트

  • 회원가입 테스트
@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

프로젝트 내부에 있는 스프링 빈을 모두 등록하여 테스트에 필요한 의존성을 추가

  • Http 요청, 응답 테스트
  • SpringBootTest를 사용하는 테스트에서 MockMvc 사용시 쓰인다.
  • Spring FramWork에서 전체적으로 Flow 가 제대로 작동하는지 검증하기 위해서 사용된다.

t2의 경우 먼저 필요로 해보이는 값들을 통해서 테스트를 만들어서 현재는 Member 객체와 폼 post등을 만들지 않아서 실패하는 테스트를 하나 만들어둔다.

  • 이 실패하는 테스트를 성공하는 테스트로 바꾸는 작업을 통해서 하나씩 만들어가면서 테스트 기반으로 member객체와 회원가입부분을 추가해보자.

참고 블로그 : https://goddaehee.tistory.com/211?category=367461

참고 문헌 : https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.testing

profile
열심히하자
post-custom-banner

0개의 댓글