Using com.nhaarman.mockitokotlin2 for testing restTemplate.getForObject(url, Int::class.java), url is type of String!
Trying to mock RestTemplate::getForObject:
val restTemplate = mock<RestTemplate> {
on { getForObject(any(), any()) } doReturn ResponseEntity.ok(Object())
}
But get an error:
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
And
Type mismatch.
Required:
Unit
Found:
ResponseEntity<Object!>!
Please help, I'm new in Kotlin
CodePudding user response:
You need to tell Mockito that it should expect a String as a first argumet. Try the following:
val restTemplate = mock<RestTemplate> {
on { getForObject(anyString(), eq(Int::class.java)) } doReturn 200
}
You can read more about anyString() in the reference documentation.
