본문 바로가기
Blog/TIL

2025-01-13 (월)

by 코젼 2025. 1. 13.
728x90
반응형
describe("~") {  
    context("~") {  
        it("~") {  
            val advertiserResponse = List(3) { index ->  
                AdvertiserInfoDTO.Response(  
                    "${base.advertiserName}$index",  
                    "${base.advertiserId}${index + 1}"  
                )  
            }  

            every {  
                innerRestClient.get()  
                    .uri("...")  
                    .retrieve()  
                    .body<List<AdvertiserInfoDTO.Response>>()  
            } returns advertiserResponse  

            internalResponseService.getAdvertiserInfo(  
                base.advertiserToken, AdPlatformType.GoogleAds  
            ) shouldBe advertiserResponse  
        }  
    }
  • Mockk 가 onStatus 와 body 호출에 대해 올바르게 설정되지 않았을 때 생기는 오류
  • retrieve() 호출 후 발생하는 동작을 세밀하게 작성하지 않으면, onStatus 처리 단계에서 설정되지 않은 동작으로 인해 실패한다.
    no answer found for ResponseSpec(child^3 of #1#4#5#6).onStatus(com.mobiai.business.internal.service.InternalResponseService$$Lambda$234/0x00000158144c2ef8@155dd4a6, com.mobiai.business.internal.service.InternalResponseService$$Lambda$235/0x00000158144c3140@5557364e) among the configured answers: (ResponseSpec(child^3 of #1#4#5#6).body(eq(ParameterizedTypeReference<java.util.List<? extends com.mobiai.business.internal.vo.dto.AdvertiserInfoDTO$Response>>))))
    io.mockk.MockKException: no answer found for ResponseSpec(child^3 of #1#4#5#6).onStatus(com.mobiai.business.internal.service.InternalResponseService$$Lambda$234/0x00000158144c2ef8@155dd4a6, com.mobiai.business.internal.service.InternalResponseService$$Lambda$235/0x00000158144c3140@5557364e) among the configured answers: (ResponseSpec(child^3 of #1#4#5#6).body(eq(ParameterizedTypeReference<java.util.List<? extends com.mobiai.business.internal.vo.dto.AdvertiserInfoDTO$Response>>))))
      at io.mockk.impl.stub.MockKStub.defaultAnswer(MockKStub.kt:91)
// 변경 전
every {  
    innerRestClient.get()  
        .uri("~")  
        .retrieve()  
        .body<List<AdvertiserInfoDTO.Response>>()  
} returns advertiserResponse

// 변경 후
every {  
    innerRestClient.get()  
        .uri(any<String>())  
        .retrieve()  
        .onStatus(any(), any())  
        .body<List<AdvertiserInfoDTO.Response>>()  
} returns advertiserResponse
728x90
반응형

'Blog > TIL' 카테고리의 다른 글

2025-01-15 (수)  (0) 2025.01.15
2025-01-14 (화)  (0) 2025.01.14
2025-01-10 (금)  (1) 2025.01.10
2025-01-09 (목)  (0) 2025.01.09
2025-01-08 (수)  (0) 2025.01.08

댓글