Jam's story
게시판 페이지 기능구현 1-4 본문
JPA - save()와 flush() 차이
save() 메소드는 바로 DB에 저장되지 않고, 영속성 컨텍스트에 저장되었다가
flush()나 commit() 수행시에 DB에 저장
save() 와 saveandflush() 차이점
saveAndFlush()메소드는 트랜잭션 실행에 data를 flush 한다
영속성 컨텍스트
엔티티를 영구저장하는 환경
ArticleService(Test)를 마친후, ArticleController(Test) 구현
ArticleController
ArticleController에 ArticleService를 넣어서 정보전달을 시켜줌
📌질문:
//api와의 입출력만 보기위해서 articleService와의 연결을 끊어줘야 하는데 모킹을해야해서 이때 쓰는 애노테이션이 mockBean
mock과 injectMocks를 안쓰고 mockBean과 Autowired로 쓰는 이유가 뭔가요?!?!
모킹
따라서 단위 테스트를 작성할 때 외부에 의존하는 부분을 임의의 가짜로 대체하는 기법이 자주 사용되는데 이를 모킹(mocking)이라고 합니다. 다시 말해, 모킹(mocking)은 외부 서비스에 의존하지 않고 독립적으로 실행이 가능한 단위 테스트를 작성하기 위해서 사용되는 테스팅 기법입니다.
@MockBean으로 @InjectMocks은 동작하지 않나요?
이제부터 @MockBean과 @Mock의 차이와 정확한 사용법에 대해 나오고 더불어 점점 헷갈려가기 시작합니다.
아래 표를 기준으로 구분해서 생각하시면 됩니다.
Mock 종류 | 의존성 주입 Target |
@Mock | @InjectMocks |
@MockBean | @SpringBootTest |
- @Mock은 @InjectMocks에 대해서만 해당 클래스안에서 정의된 객체를 찾아서 의존성을 해결합니다.
- @MockBean은 mock 객체를 스프링 컨텍스트에 등록하는 것이기 때문에 @SpringBootTest를 통해서 Autowired에 의존성이 주입되게 됩니다.
https://cobbybb.tistory.com/16
Model, ModelMap Vs ModelAndView 차이점
- 데이터만 저장한다 vs 데이터와 이동하고자 하는 View Page를 같이 저장한다
Model, ModelMap 공통점
- model.addAttribute("변수명");
- modelMap.addAttribute("변수명");
- 둘 다 addAttribute를 사용함
- Model or ModelMap에 데이터만 저장 후 View에서 사용목적
Model, ModelMap 차이점
- Model - 인터페이스
- ModelMap - 클래스
출처: https://javaoop.tistory.com/56 [개쿠:티스토리]
질문 :
ArticleController
ArticleWithCommentsResponse article = ArticleWithCommentsResponse.from(articleService.getArticle(articleId));
에서 response로 바꾸는 이유가 궁금
'Spring' 카테고리의 다른 글
게시판 인증구현 - 뷰 (0) | 2022.11.13 |
---|---|
게시판 댓글 저장 , 삭제 기능 (0) | 2022.11.05 |
1)DataRestTest 클래스에서 통합테스트로 작성하는 이유 2) @Transactional을 붙이는 이유 (0) | 2022.10.20 |
톰캣 cmd에서 실행시키기 (0) | 2022.10.14 |
[spring] git kraken 에서 충돌이 일어날때 (0) | 2022.09.13 |