我想模拟一个字符串扩展名。
我已经阅读了使用
mockStatic("kotlin.String")
或
mockkStatic("kotlin.kotlin_builtins")
但它一直在说
Caused by: io.mockk.MockKException: Can't instantiate proxy for class kotlin.String
at io.mockk.impl.instantiation.JvmMockFactory.newProxy(JvmMockFactory.kt:64)
at io.mockk.impl.instantiation.AbstractMockFactory.newProxy$default(AbstractMockFactory.kt:29)
at io.mockk.impl.instantiation.AbstractMockFactory.spyk(AbstractMockFactory.kt:92)
at io.floriday.pdfgeneratorapi.integration.TradeItemListenerTest.<init>(TradeItemListenerTest.kt:131)
... 18 more
Caused by: io.mockk.proxy.MockKAgentException: Failed to create proxy for class java.lang.String.
class java.lang.String is one of excluded classes
at io.mockk.proxy.jvm.ProxyMaker.throwIfNotPossibleToProxy(ProxyMaker.kt:128)
at io.mockk.proxy.jvm.ProxyMaker.proxy(ProxyMaker.kt:28)
at io.mockk.impl.instantiation.JvmMockFactory.newProxy(JvmMockFactory.kt:34)
... 21 more
可能我在模拟错误的文件,但似乎无法正确地获得文件名。感谢您的帮助:-D
答案 0 :(得分:1)
这是您的扩展功能的问题。它在哪里?没有所有扩展功能的通用方法。
我在String
中发现了许多与kotlin.text.StringsKt
相关的功能。我是怎么找到的?我只是去IDEA中一个String扩展函数的定义(源代码),发现@JvmName
注释知道确切的类名。
请尝试以下操作:
mockkStatic("kotlin.text.StringsKt") {
...
}
如果这没有帮助,您基本上需要找出所需的课程。只需评论您需要的扩展功能即可。