테스트에서 assertThat 항상 같은 값나오는게 아닌가 궁금합니다.
367
작성자 없음
작성한 질문수 0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 네
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 네
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
네
[질문 내용]
여기에 질문 내용을 남겨주세요.
상품 도메인 개발 12분 에
ItemRepositoryTest 안에 @Test void save() 메소드를 보면
public Item save(Item item) {
item.setId(++sequence);
store.put(item.getId(), item);
return item;
}@Test
void save() {
//given
Item item = new Item("itemA", 10000, 10);
//when
Item savedItem = itemRepository.save(item);
//then
Item findItem = itemRepository.findById(item.getId());
assertThat(findItem).isEqualTo(savedItem);
}
Item item 객체생성을 하고 itemRepository.save(item);
리포지터리save메소드를 호출해서
id 값 set하고 map에저장하고 item 을 그대로 반환하자나요
그리고 test save() 에서 Item savedItem 으로 받고요
그럼 savedItem 은 item 을 참조하는거 아닌가요?
savedItem 을 받지 않고 그냥 item 을 사용하는거와 다른가요?
예를들어
assertThat(findItem).isEqualTo(savedItem);
대신
assertThat(findItem).isEqualTo(item);
하는거와 같은거 아닌가요?
왜 새로 변수를 만들어주는 것인지 궁금합니다.
초보라 혼란해서 이해가잘안가서요 ㅜ
답변 1
2
테스트 메서드 이름을 보면 @Test void save()로 세이브 기능을 테스트 하기 위함입니다.
그렇다면 save()가 잘 동작하는지를 봐야합니다.
이 부분을 save가 아닌 단순한 addOne() 메서드를 예시로 들면,
addOne(int param)은 param으로 받은 인자의 값을 1을 더해서 반환하는 메서드입니다.
int addOne(int param) {
return param + 1;
}위 메서드는 이해 될거라 생각합니다.
이 addOne()이 정상작동하는지 확인해보겠습니다.
간단히 1을 넣는다고 한다면 2를 반환하겠죠?
void addOneTest() {
int one = 1;
int expected = addOne(one);
}addOneTest라는 메서드를 만들었습니다. .
addOne()이 정상작동하는지 검증하려면 리턴 변수 expected를 검증해야합니다.
save()도 이와 동일합니다.
그리고 이 부분도 같이 보시면 이해가 되실텐데요
Item item = new Item("itemA", 10000, 10);
이렇게 Item이 생성되는 시점에서는 item의 id가 없습니다.
하지만 save()가 정상 동작했다면 save()의 로직으로 인해 item에 id가 부여됩니다.
Item findItem = itemRepository.findById(item.getId());
그렇기 때문에 ItemRepository에서 findById로 item의 id로 조회됩니다.(정상적으로 저장되고 해당 아이템에 id가 부여되었는지 확인)
감사합니다.
0
헐 늦은밤 감사합니다.
제가 제목을 잘못 적었네요 죄송합니다. ㅜㅜ
Item item = new Item("itemA", 10000, 10);
Item savedItem = itemRepository.save(item);
save(item) 메소드를 호출한 후에 item 은
savedItem 과 완전히 똑같은거 맞나요?
답변 정말 감사합니다!!
servlet과 container에 대한 질문입니다
0
25
1
api를 어느 컨트롤러에 작성해야하는지는 어떤 기준으로 해야하나요?
0
64
1
jsp 의존성 수정 요청
0
80
2
요즘 웹 서버가 주로 사용되는 이유는 SPA 구조 때문일까요 ?
0
143
1
save() 메서드 문의
0
67
1
절대 경로로 templates/basic 하위 파일 열면 css 적용 안되는 현상
0
101
1
request-body-json
0
83
2
MVC 패턴의 적용 단위
0
97
1
RequestMapping을 이용한 핸들러, 어댑터
0
119
2
save 후 결과화면
0
89
2
jsp를 이용한 view
0
97
1
application.properties에 debug 추가해도 결과가 똑같습니다.
0
178
1
수업 코드 제공 관련 문의
0
97
2
RequestMappingHandlerAdapter의 Controller 호출 과정
0
100
3
파일 오픈 시
0
70
1
스프링 배치 관련
0
78
1
@RequestParam의 defaultValue가 blank 값도 처리하는 지 여부
0
112
1
postman으로 /request-body-json-v1 호출시 500 error
0
96
1
프론트엔드와 백엔드의 mvc, rest api에 대한 질문
0
79
1
모델의 역할과 계층 분리에 대한 이해 차이 + 추가질문
0
111
1
console log 출력 관련 질문입니다.
0
75
1
애플리케이션이 실행 되지 않습니다 ㅠㅠㅠ
0
139
1
html 변경하는 부분 적용 문제
0
103
1
한글 깨짐
0
77
2





