Spock given and가 검증을 하는지
63
작성한 질문수 1
안녕하세요, 첫 질문입니다.
14강 외부 API 연동 - Spock 적용 10분 30초 경에 given 뒤 and 추가로 검증을 할 수가 있게 된다고 하셨는데 given 뒤 and에는 검증 기능이 없는 것 아닐까요? old()를 사용하거나 expect 를 사용하라는 얘기가 있는데 확인해 주실 수 있나요?
좋은 강의 감사합니다!
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
나강의듣는다고광고하지마님, 질문해 주신 내용이 맞습니다.
Spock에서 given: 블록은 테스트에 필요한 객체나 데이터를 설정하는 용도이며, 기본적으로 검증 기능은 없습니다.
given: 다음에 작성하는 and:는 별도의 검증 블록이 아니라, 같은 준비 단계의 내용을 논리적으로 나누어 표현하기 위한 레이블입니다.
given:
def user = new User(name: "홍길동")
and:
userRepository.findById(1L) >> Optional.of(user)
위 코드에서 and:는 given:과 동일하게 테스트 사전 준비 작업을 수행할 뿐, 어떤 값이 기대한 값과 일치하는지 검증하지는 않습니다.
검증은 일반적으로 then: 블록에서 수행합니다.
when:
def result = userService.findUser(1L)
then:
result.name == "홍길동"
1 * userRepository.findById(1L)
또는 실행과 검증을 함께 작성하는 expect: 블록을 사용할 수 있습니다.
expect:
userService.calculate(2, 3) == 5
이전 상태와 이후 상태를 비교해야 하는 경우에는 then: 블록에서 old()를 사용할 수 있습니다.
then:
user.count == old(user.count) + 1
따라서 강의에서 “given: 뒤에 and:를 추가하면 검증할 수 있다”라고 설명되었다면, 정확히는 “given: 뒤에 and:를 사용해 준비 과정을 나눠 작성할 수 있다”는 의미로 이해하는 것이 맞습니다.
검증 자체는 then:, expect:, 조건식, 상호작용 검증인 1 * mock.method() 등을 사용해야 합니다.
참고 자료: Spring Boot에서 Spock 사용하기
네이버 API | '검색 - 책' API 제공 중단
0
86
2
handleBindException 의 기대의도가 방향이 맞는지 궁금합니다.
0
83
2
NaverBookRepository.class 의 위치에 따른 모듈간의 의존성에 대해 질문드립니다.
1
93
2
패키지 vs 모듈 선택 기준
0
107
2
Kotlin 테스트 프레임워크
0
137
2
import 오류?
0
131
2
JSON 역직렬화
0
126
2
Spring Cloud 버전 관리 문제
0
339
2
AsyncExcutor 설정값 질문
0
138
2
17강 api서버구현2 질문있습니다.(ai답변이 이상합니다.)
0
172
2
16강 api서버구현 질문있습니다.
0
117
2
14번쨰 부분 중 질문드립니다..<ai답변으로 해도 안되요>
0
219
2
.
0
242
1
서비스에 @Transactional 애노테이션을 사용하시지 않는 이유가 궁금합니다
0
212
2
NaverClientTest 질문있습니다.
0
252
2
멀티모듈 구성 질문입니다.
0
283
3
멀티모듈 구성 강의에 대해 질문이 있습니다.
0
285
3
SPOCK 의존성 추가 후 Generate Test 옵션 미노출
0
283
3
멀티모듈 지식 습득에 관하여 질문 드립니다.
0
316
2
Async Config 테스트컨트롤러의 코드의 동작이 안되는거 같습니다.
0
296
3
author 배열이 비어서 오는 경우가 있으니 참고하세요.
0
255
3
커밋 끊으면서 해주시는거 너무 좋네요.
1
203
2
비즈니스 로직 담당 서비스
0
259
2
모의과제 소개
0
214
2





