inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)

게시글 조회 1 - 단건조회

mock postService#write

443

임도현

작성한 질문수 22

0

안녕하세요 호돌맨님 강의 듣던 도중 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 쓰겠다는 생각 자체가 에러인것인가요?

 

감사합니다.

 

 

vuejs JPA aws Spring Security spring-boot

답변 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