类型推断失败。预期类型不匹配

Type inference failed. Expected type mismatch

下面的代码显示了错误。类型推断失败。预期类型不匹配 需要Response<BaseResponse<Any>>! 找到Response<BaseResponse<RetriveUserInfoResponse>!>!

`when`( mockIOnboardingService.validateCustomerIdentity(customerType.toLowerCase(), ValidateCustomerRequest(customerId, documentType, "243546", tyc)))
.thenReturn(Response.success(BaseResponse(payload = RetriveUserInfoResponse("+5689765432")))) //--> Here the error

这是 validateCustomerIdentity 方法

@POST(ApiConstants.bffOnboardingPath + ApiConstants.pathRetriveUserInfo)
    suspend fun validateCustomerIdentity(
        @Header(ApiConstants.headerXflowService) customerType : String,
        @Body body: ValidateCustomerRequest
    ): Response<BaseResponse<Any>>

如您所见returns BaseResponse<Any>。为什么 Android Studio 向我显示 BaseResponse<RetriveUserInfoResponse>! 错误

这是 RetrieveUserInfoResponse 数据class

data class RetriveUserInfoResponse(
    @SerializedName("phone")
    val phone: String
)

这个问题是 Response.success(BaseResponse(payload = RetriveUserInfoResponse("+5689765432"))) 产生了一个 Response<BaseResponse<RetriveUserInfoResponse>>,它与 Response<BaseResponse<Any>>.

不是同一类型(或子类型)

您可以通过将 RetriveUserInfoResponse 转换为 Any 来修复它:

Response.success(BaseResponse(payload = RetriveUserInfoResponse("+5689765432") as Any))

或者通过将 validateCustomerIdentity() 的 return 类型更改为 Response<out BaseResponse<out Any>>,这是可行的,因为 Response<BaseResponse<RetriveUserInfoResponse>>Response<out BaseResponse<out Any>> 的子类:

@POST(ApiConstants.bffOnboardingPath + ApiConstants.pathRetriveUserInfo)
suspend fun validateCustomerIdentity(
    @Header(ApiConstants.headerXflowService) customerType : String,
    @Body body: ValidateCustomerRequest
): Response<out BaseResponse<out Any>>