2017-02-21 58 views
4

Может ли кто-нибудь сказать мне, как я должен выполнять функции расширения модулей в Котлин? Поскольку они решаются статически, если они проверяются как вызовы статического метода или как нестатические? Кроме того, поскольку язык полностью совместим с Java, как должен выполняться Java-модуль для функций расширения Kotlin?Как проверить функции расширения Kotlin?

ответ

9

Ну, чтобы проверить метод, будь то статический или нет, вы называете его реальным кодом, и вы проверяете, что он поступает правильно.

Предполагая, что этот метод расширения, например, определяется в файле COM/Foo/Bar.kt:

fun String.lengthPlus1(): Int { 
    return this.length + 1 
} 

Если вы пишете тест в Котлин (что вы обычно делаете, чтобы проверить Котлин код) , можно было бы написать

assertThat("foo".lengthPlus1()).isEqualTo(4); 

Если вы пишете в Java (но почему бы вы сделать это?)

assertThat(BarKt.lengthPlus1("foo")).isEqualTo(4); 
+0

Никогда не намеревался написать Ja va тесты для Kotlin, что было бы очень плохой идеей :) Это было больше, чтобы проверить, как он ведет себя таким образом. Но как насчет того, хочу ли я проверить, вызван ли этот метод (например, с использованием Mockito), а не для проверки возвращаемого значения? – TheTechWolf

+0

Как показывает код Java, метод расширения фактически является статическим методом. Мокито не может издеваться над статическими методами. –

+1

@TheTechWolf вы действительно не должны беспокоиться о проверке того, был ли вызван ваш метод расширения, вы должны просто проверить, есть ли ожидаемый результат. Если ваш метод расширения слишком сложный и требует подтверждения его вызова, он, вероятно, должен быть реорганизован в более тестируемый класс. Хотя это все зависит от вашего прецедента и того, что на самом деле делает функция расширения, каков ваш прецедент? –

 Смежные вопросы

  • Нет связанных вопросов^_^