티스토리 뷰

코프링으로 개발 시 마주친 에러 관련 포스팅입니다.

개발 환경은 다음과 같습니다.

  • Spring Boot Version : 3.0.1
  • Java Version : 17
  • Kotlin Version : 1.8.21
  • Kotest Version : 5.5.5

배경

저는 mocking할 때 any()를 많이 사용했었습니다.

하지만 saveAll()은 any()로 mocking하려고 하면 다음과 같은 에러가 발생합니다.

Not enough information to infer type variable S

해석해보자면 정보가 불충분하여 변수 S에 대한 타입을 추론할 수 없다라는 뜻입니다.

원인

다음과 같이 save mocking은 에러를 발생하지 않습니다.

save의 파라미터는 S entity 입니다. cafeRepository의 save 함수이므로 any()는 Cafe 타입을 가지겠구나 추론을 한 모양입니다.

하지만 saveAll 함수는 파라미터가 Iterable<S> entities 입니다.

any()는 타입추론은 했지만, Iterable 타입만 추론했을 뿐 S의 타입은 추론하지 못한 것 같습니다.

결론

결국 any()의 타입추론을 돕기 위해 saveAll 함수가 어떤 타입을 취급하는지 알려줘야 합니다.

every { cafeRepository.saveAll<Cafe>(any()) } returns listOf(cafeDto.toEntity())

saveAll의 타입을 위 코드와 같이 명시해줌으로써 해당 에러를 해결할 수 있었습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함