gpt4 book ai didi

gradle - 与Kotlin一起使用的Mockito无法正常工作,因为它仍在调用原始方法

转载 作者:行者123 更新时间:2023-12-03 05:30:04 24 4
gpt4 key购买 nike

当我将Mockito与Kotlin一起使用时,该模拟似乎不起作用。我仔细检查了是否以正确的方式使用了Mockito API,还进行了调试,并看到模拟对象具有Mockito拦截器/代理,而不仅仅是一个普通实例。

这是我的最小示例:

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;
}
}
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.mockito.ArgumentMatchers
import org.mockito.Mockito
import java.nio.file.Path

class MyAppTest() {
private val mockedDownloader: Downloader = Mockito.mock(Downloader::class.java)
private val myApp: MyApp = MyApp(mockedDownloader)

@Test
fun testDownloader(){
Mockito.`when`(mockedDownloader.getFileName("fromUrl"))
.thenReturn("testFileName.pdf")
Mockito.doNothing().`when`(mockedDownloader).download(ArgumentMatchers.anyString(), ArgumentMatchers.any(Path::class.java))
assertThat(myApp.useDownloader()).isEqualTo("testFileName.pdf")
}
}

我收到的错误如下:
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
  • 使用Gradle
  • 由IDE测试运行程序(不是gradle之一)运行
  • 最佳答案

    代替

    Mockito.`when`(mockedDownloader.getFileName("fromUrl"))`

    使用

    Mockito.`when`(mockedDownloader.getFileName(ArgumentMatchers.eq("fromUrl")))

    要么

    Mockito.`when`(mockedDownloader.getFileName(anyString()))

    关于gradle - 与Kotlin一起使用的Mockito无法正常工作,因为它仍在调用原始方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59679304/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com