编译到 JavaScript 时如何测试 Kotlin 代码?
How do I test Kotlin code when compiling to JavaScript?
我在 IntelliJ(旗舰版)中有一个 Kotlin JavaScript 项目。我希望能够为这个项目编写测试。
我尝试了很多不同的方法,从用 Spek 编写测试(这将是理想的)到用 Karma/Jasmine 编写它们。 Spek 的问题是我无法让它与 JavaScript 项目一起工作。它抱怨一些罐子不是 JavaScript 库。
Karma/Jasmine 的问题是我不知道如何让测试运行器从我的 Kotlin 测试输出中提取测试。当测试以纯 JavaScript 编写时,它们无法访问我的 Kotlin 对象,因为我不知道如何使用 Kotlin 对 JavaScript 执行时发生的所有名称重整来正确引用它们编译.
目前我对任何事情都持开放态度,因为这是一个 Angular 项目,我可能会想出如何使用 Protractor 进行端到端测试,尽管我真的更喜欢一些单元测试覆盖率。
您可以在下面找到我使用 QUnit 编写的简单测试。我相信您可以为其他图书馆做同样的事情。此外,可以通过使其类型更安全来改进它。
main.kt
:
native("QUnit") val qunit: dynamic
val assert = qunit.assert
fun main(args: Array<String>) {
qunit.test( "hello test") { assert ->
val t: Any = "1"
assert.ok(1 == t, "Passed!")
}
qunit.test( "hello test") {
assert.ok(1 == 1, "Passed!")
}
}
runner.html
:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>QUnit Example</title>
<link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-1.17.1.css">
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<script src="https://code.jquery.com/qunit/qunit-1.17.1.js"></script>
<script src="lib/kotlin.js"></script>
<script src="js_test.js"></script>
</body>
</html>
我在 IntelliJ(旗舰版)中有一个 Kotlin JavaScript 项目。我希望能够为这个项目编写测试。
我尝试了很多不同的方法,从用 Spek 编写测试(这将是理想的)到用 Karma/Jasmine 编写它们。 Spek 的问题是我无法让它与 JavaScript 项目一起工作。它抱怨一些罐子不是 JavaScript 库。
Karma/Jasmine 的问题是我不知道如何让测试运行器从我的 Kotlin 测试输出中提取测试。当测试以纯 JavaScript 编写时,它们无法访问我的 Kotlin 对象,因为我不知道如何使用 Kotlin 对 JavaScript 执行时发生的所有名称重整来正确引用它们编译.
目前我对任何事情都持开放态度,因为这是一个 Angular 项目,我可能会想出如何使用 Protractor 进行端到端测试,尽管我真的更喜欢一些单元测试覆盖率。
您可以在下面找到我使用 QUnit 编写的简单测试。我相信您可以为其他图书馆做同样的事情。此外,可以通过使其类型更安全来改进它。
main.kt
:
native("QUnit") val qunit: dynamic
val assert = qunit.assert
fun main(args: Array<String>) {
qunit.test( "hello test") { assert ->
val t: Any = "1"
assert.ok(1 == t, "Passed!")
}
qunit.test( "hello test") {
assert.ok(1 == 1, "Passed!")
}
}
runner.html
:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>QUnit Example</title>
<link rel="stylesheet" href="https://code.jquery.com/qunit/qunit-1.17.1.css">
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<script src="https://code.jquery.com/qunit/qunit-1.17.1.js"></script>
<script src="lib/kotlin.js"></script>
<script src="js_test.js"></script>
</body>
</html>