Как издеваться над расширением String? - PullRequest
0 голосов
/ 31 декабря 2018

Я хотел бы посмеяться над расширением строки.
Я прочитал инструкции, как это сделать, используя

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

1 Ответ

0 голосов
/ 31 декабря 2018

Это вопрос к вашей функции расширения.Где это находится?Не существует общего подхода ко всем функциям расширения.

Я нашел много String связанных функций в kotlin.text.StringsKt.Как я это нашел?Я просто пошел к определению (исходные коды) одной функции расширения String в IDEA и обнаружил аннотацию @JvmName, чтобы узнать точное имя класса.

Пожалуйста, попробуйте следующее:

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

Еслиэто не поможет вам в основном выяснить, какой класс вам нужен.Просто прокомментируйте, какая функция расширения вам нужна.

...