【问题标题】:How to mock String extension?如何模拟字符串扩展?
【发布时间】:2019-05-27 22:57:58
【问题描述】:

我想模拟一个字符串扩展。
我已阅读说明如何使用

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

【问题讨论】:

    标签: kotlin mockk


    【解决方案1】:

    这是您的扩展功能的问题。它住在哪里?没有针对所有扩展功能的通用方法。

    我在kotlin.text.StringsKt中发现了很多String相关的功能。我是怎么找到的?我刚刚去IDEA中一个String扩展函数的定义(源代码),发现@JvmName注解知道确切的类名。

    请尝试以下操作:

    mockkStatic("kotlin.text.StringsKt") {
        ...
    }
    

    如果这对您没有帮助,您基本上需要找出您需要的课程。只需评论您需要的扩展功能即可。

    【讨论】:

    • 我们可以模拟 Android Activities 吗?
    猜你喜欢
    • 2018-05-26
    • 2011-10-15
    • 1970-01-01
    • 2019-02-25
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 2012-11-07
    相关资源
    最近更新 更多