강의를 듣고 개인 프로젝트를 공부하는 도중 적용하다가 문제가 발생했는데, 이유를 여쭙고 싶어서 이렇게 질문을 남기게 되었습니다.
<테스트하려는 메서드>
<테스트 메서드>
<ChatRoom 엔티티>
<에러 내용 중 일부>
``` shell
Strict stubbing argument mismatch. Please check:
- this invocation of 'save' method:
chatRoomRepository.save(
com.example.practice.chatRoom.ChatRoom@252f626c
-> at com.example.practice.chatRoom.ChatRoomService.createChatRoom(ChatRoomService.java:39)
- has following stubbing(s) with different arguments:
1. chatRoomRepository.save(
com.example.practice.chatRoom.ChatRoom@20e6c4dc
위와 같이, ChatRoomRepository(JpaRepository 상속)의 save() 메서드를 Stubbing 하는 과정에서 문제가 발생했습니다.
테스트하려는 메서드(
createChatRoom
(Member loginMember
,
ChatRoomRequest chatRoomRequest)
)) 내부에서 chatRoomRepository.save() 메서드에 매개변수로 생성자를 바로 넣어줘서 그런걸까요?
원인을 잘 모르겠습니다.. 😭
추가적인 질문으로, 테스트하려는 `createChatRoom()` 메서드는 보시는 바와 같이 `chatRoom`을 생성하고, `Boolean` 값을 리턴합니다. 하지만 테스트 코드의 경우 대부분 리턴값이나 발생하는 예외클래스에 의존하기에, 보통 서비스 레이어의 메서드에서 이러한 `Boolean` 값은 의미가 덜하다는 느낌을 받았습니다.
서비스 레이어의 메서드에서는 보통 특정 도메인에 관련된 객체나 컬렉션 등을 반환하는게 더 좋은 코드일까요?
질문 읽어주셔서 감사합니다. 좋은 주말 되세요 :)