inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

서버개발자 과제전형 완벽가이드 - 1편

외부 API 연동 - Spock 적용

Spock given and가 검증을 하는지

63

나강의듣는다고광고하지마

작성한 질문수 1

0

안녕하세요, 첫 질문입니다.

14강 외부 API 연동 - Spock 적용 10분 30초 경에 given 뒤 and 추가로 검증을 할 수가 있게 된다고 하셨는데 given 뒤 and에는 검증 기능이 없는 것 아닐까요? old()를 사용하거나 expect 를 사용하라는 얘기가 있는데 확인해 주실 수 있나요?

좋은 강의 감사합니다!

java spring spring-boot database spock

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 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