Как иметь модуль KotlinJS, где бизнес-логика тестируется с помощью JUnit?

Потерпите меня, я еще не вижу полной картины того, как работает мультиплатформенность.

Чего я хочу добиться, так это иметь некоторую бизнес-логику, которая в конце скомпилируется в файл js, который я могу использовать в HTML, а также покрыть его модульными тестами.

Я могу заставить первый парк работать с простым проектом KotlinJS Gradle. Тестовая часть сложнее. Благодаря kotlin-test-js у меня есть некоторые аннотации, такие как @Test, но я хотел бы написать параметризованные тесты, чего я могу добиться с помощью JUnit.

Как это возможно?

Я новичок в JS. Mocha, qunit, karma - все это новые для меня термины, и я еще не разобрался в настройке нескольких модулей. Есть ли хорошая (актуальная!) запись об этом?

Спасибо


person chrystolin    schedule 15.07.2019    source источник


Ответы (1)


Вы не можете вызвать JUnit из чистого проекта KotlinJS (насколько я знаю). Для этого вам понадобится Kotlin Multiplatform. Затем у вас может быть чистый модуль Kotlin с вашей бизнес-логикой, который вы можете расширить с помощью специального модуля Kotlin/JS (этот модуль будет скомпилирован в нужный файл .js) и специального модуля Kotlin/JVM (этот будет поддерживать ваши тесты JUnit и запустить их на JVM). Конечно, вы не можете использовать специфические функции JS (например, DOM) в чистом модуле Kotlin, но бизнес-логика должна быть в порядке.

Дополнительные сведения о настройке такого проекта см. в официальной документации. В официальном руководстве даже явно упоминается, как настроить модули, специфичные для JS и JVM, и JUnit. Там есть лишний модуль Kotlin/Native, который вы можете безопасно удалить/игнорировать.

В качестве альтернативы вы можете поискать чистые фреймворки для модульных тестов JS, но это может быть немного сложнее в настройке.

person daemontus    schedule 15.07.2019