模拟 mock<RestTemplate> getForObject 时如何解决歧义?
How to resolve ambiguity when mocking mock<RestTemplate> getForObject?
使用 com.nhaarman.mockitokotlin2
测试 restTemplate.getForObject(url, Int::class.java)
,url 是 String!
的类型
正在尝试模拟 RestTemplate::getForObject
:
val restTemplate = mock<RestTemplate> {
on { getForObject(any(), any()) } doReturn ResponseEntity.ok(Object())
}
但是报错:
Overload resolution ambiguity. All these functions match.
public open fun <T : Any!> getForObject(url: URI!, responseType: Class<TypeVariable(T)!>!): TypeVariable(T)! defined in org.springframework.web.client.RestTemplate
public open fun <T : Any!> getForObject(url: String!, responseType: Class<TypeVariable(T)!>!, vararg uriVariables: Any!): TypeVariable(T)! defined in org.springframework.web.client.RestTemplate
和
Type mismatch.
Required:
Unit
Found:
ResponseEntity<Object!>!
请帮忙,我是 Kotlin 新手
您需要告诉 Mockito 它应该将 String
作为第一个参数。尝试以下操作:
val restTemplate = mock<RestTemplate> {
on { getForObject(anyString(), eq(Int::class.java)) } doReturn 200
}
您可以在 reference documentation 中阅读有关 anyString()
的更多信息。
使用 com.nhaarman.mockitokotlin2
测试 restTemplate.getForObject(url, Int::class.java)
,url 是 String!
正在尝试模拟 RestTemplate::getForObject
:
val restTemplate = mock<RestTemplate> {
on { getForObject(any(), any()) } doReturn ResponseEntity.ok(Object())
}
但是报错:
Overload resolution ambiguity. All these functions match.
public open fun <T : Any!> getForObject(url: URI!, responseType: Class<TypeVariable(T)!>!): TypeVariable(T)! defined in org.springframework.web.client.RestTemplate
public open fun <T : Any!> getForObject(url: String!, responseType: Class<TypeVariable(T)!>!, vararg uriVariables: Any!): TypeVariable(T)! defined in org.springframework.web.client.RestTemplate
和
Type mismatch.
Required:
Unit
Found:
ResponseEntity<Object!>!
请帮忙,我是 Kotlin 新手
您需要告诉 Mockito 它应该将 String
作为第一个参数。尝试以下操作:
val restTemplate = mock<RestTemplate> {
on { getForObject(anyString(), eq(Int::class.java)) } doReturn 200
}
您可以在 reference documentation 中阅读有关 anyString()
的更多信息。