Gradle 与Kotlin一起使用的Mockito不起作用,因为它仍在调用原始方法
当我将Mockito与Kotlin一起使用时,似乎模拟不起作用。我仔细检查了Mockito API的使用是否正确,并进行了调试,发现被模拟的对象具有Mockito拦截器/代理,而不仅仅是一个普通实例 这是我的最起码的例子:Gradle 与Kotlin一起使用的Mockito不起作用,因为它仍在调用原始方法,gradle,kotlin,intellij-idea,mockito,Gradle,Kotlin,Intellij Idea,Mockito,当我将Mockito与Kotlin一起使用时,似乎模拟不起作用。我仔细检查了Mockito API的使用是否正确,并进行了调试,发现被模拟的对象具有Mockito拦截器/代理,而不仅仅是一个普通实例 这是我的最起码的例子: import java.nio.file.Path class MyApp( private val downloader: Downloader ) { fun useDownloader(): String { val fileName
import java.nio.file.Path
class MyApp(
private val downloader: Downloader
) {
fun useDownloader(): String {
val fileName = downloader.getFileName("fromUrl")
downloader.download("http://notworking", Path.of("notworking:$fileName"))
return fileName;
}
}
我收到的错误如下:
java.lang.IllegalArgumentException: URI is not absolute
at java.base/java.net.URL.fromURI(URL.java:681)
at java.base/java.net.URI.toURL(URI.java:1116)
at org.springframework.http.client.SimpleClientHttpRequestFactory.createRequest(SimpleClientHttpRequestFactory.java:145)
at org.springframework.http.client.support.HttpAccessor.createRequest(HttpAccessor.java:124)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:738)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:677)
at org.springframework.web.client.RestTemplate.headForHeaders(RestTemplate.java:369)
at fcse.mycompany.importer.app.Downloader.getFileName(Downloader.kt:19)
错误告诉我,Downloader
对象没有被模拟,而是与它的原始方法一起使用-没有发生拦截
其他信息:
- 使用IntelliJ IDEA
- 使用渐变
- 由IDE测试运行程序运行(不是gradle测试运行程序)
- 而不是
Mockito.`when`(mockedDownloader.getFileName(“fromUrl”))`
使用
Mockito.`when`(mockedDownloader.getFileName(ArgumentMatchers.eq(“fromUrl”))
或
Mockito.`when`(mockedDownloader.getFileName(anyString()))
除了以下事实之外,这几乎起到了作用:java.lang.IllegalStateException:ArgumentMatchers.eq(“fromUrl”)不能为null
。非常令人困惑的错误消息
java.lang.IllegalArgumentException: URI is not absolute
at java.base/java.net.URL.fromURI(URL.java:681)
at java.base/java.net.URI.toURL(URI.java:1116)
at org.springframework.http.client.SimpleClientHttpRequestFactory.createRequest(SimpleClientHttpRequestFactory.java:145)
at org.springframework.http.client.support.HttpAccessor.createRequest(HttpAccessor.java:124)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:738)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:677)
at org.springframework.web.client.RestTemplate.headForHeaders(RestTemplate.java:369)
at fcse.mycompany.importer.app.Downloader.getFileName(Downloader.kt:19)