mock postService#write
443
작성한 질문수 22
안녕하세요 호돌맨님 강의 듣던 도중 mock 으로도 할 수 있다해서 고민해보는중 잘 모르겠어서 질문을 올립니다.
public void write(PostCreate postCreate) {
Post post = Post.builder()
.title(postCreate.getTitle())
.content(postCreate.getContent())
.build();
postRepository.save(post);
}위와 같은 write 메소드를 검증하려면 test 코드에서
posRepostiroy를 mock으로 주입받고 postService.write(postCreate)를 호출시 postRepository.save를 호출할때 어떤 일을 하게 될것이냐 를 stubbing 하려고 하는데
실제 h2 메모리 db에 저장을 해야, 제대로 저장이 되었다는 것을 아래 처럼 검증할 수 있을 것 같은데
Assertions.assertEquals(1L, postRepository.count());위 write 메소드의 경우 아무것도 return 하지 않으니 save 메소드 stubbing을 어찌 해야할지 모르겠습니다...
아니면 접근 자체가 틀렸을까요? 실제 외부와 연동이 잘되는지 확인하는것이니 mock 쓰겠다는 생각 자체가 에러인것인가요?
감사합니다.
답변 1
1
안녕하세요.
질문을 남겨주셔서 감사합니다.
테스틀위해 JpaRepository를 구현하는 MockPostRepository를 만든다고 생각해봅시다.
class MockPostRepository implements JpaRepository<Post, Long> {
@Override
public <S extends Post> S save(S entity) {
return myList.add(entity)
}
@Override
public List<Post> findAll() {
return ...;
}
@Override
public List<Post> findAll(Sort sort) {
return ...;
}
@Override
public List<Post> findAllById(Iterable<Long> longs) {
return ...;
}
@Override
public <S extends Post> List<S> saveAll(Iterable<S> entities) {
return null;
}
...생략
}가능은한데 정말 난감하겠지요?..
그러면 실제 스프링 Context를 모두 올리지 않고 Jpa Repository를 알아서 처리해주는 담당자가 있으면 어떨가 생각하게됩니다.
그것이 바로 `@DataJpaTest` 입니다. 관련해서 구글링 해보시면 도움이 될겁니다.
p/s: mocking을 써서 https://stackoverflow.com/a/51258234 이렇게 해결하는 분도 있네요.
감사합니다.
Deprecated 관련 사항들
0
105
2
깃헙 collaboator 초대 관련
0
89
1
강의 듣다가 도커 이미지 생성시 각각도 가능하나 그렇게 사용하는데가 많은지 모르겠다라는 말을 듣고 남김니다
0
158
2
logout 후에 login 페이지 이동은 어디서 시켜주는건가요?
0
233
1
다중 데이터를 삭제 할 때
0
271
2
querydsl Q class 이슈
0
417
2
Windows WSL Vue 설정
2
247
1
Dip, @transactional
0
189
1
[vite] http proxy error: /auth/login
0
1047
2
로그인 하고 나서 GET요청으로 메인페이지 요청
0
234
2
GitHub Collaborator 초대 관련
0
258
2
Window에서 Vue.js 설정
0
322
2
collaboator로 초대받을 수 있을까요??
0
284
2
SecurityMockContext 로부터 유저 정보를 가져오기
0
262
1
섹션9 프론트의 코드를 보고싶습니다,,,
0
423
1
Spring Security - defaultSuccessUrl 질문
0
627
1
강의 화면이 나오지 않습니다. 음성과 자막만 나와요
0
304
1
JPAQueryFactory(em)의 객체 생성자 오류에 대해서 질문이 있습니다ㅜㅜ
0
690
2
ExceptionHandler가 AccessDeniedHandler(Http403Handler)를 먹어버리는 현상
0
1182
2
섹션10 언제 나오나요?
0
485
1
CommentService에서 Repository를 호출하지 않는데도
0
345
1
Editor....를 활용한 패턴에 질문있습니다.
0
496
1
섹션9 vue
0
456
2
Post에 edit 메서드 삼항연산자 질문
0
476
2





