问题标签 [kotest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
213 浏览

micronaut - 如何在用 Micronaut Kotest 编写的测试中模拟 bean

我正在尝试添加测试来测试控制器,但模拟依赖项。

这不起作用,由于PostRepsoitory无法识别嘲笑。

运行测试时更改为以下内容。

并得到了这样的例外。

DataInitializer用于监听和StartupEvent插入样本数据。如何在运行测试之前确保应用程序成功启动。

完整的代码在这里

还有另一个用 Junit5 和 Mockito 编写的模拟示例,效果很好。

0 投票
1 回答
152 浏览

android - 如何使用 Kotest 和 Mockk 库为返回 LiveData 的方法编写单元测试

我正在使用 MVVM 来构建我的 android 应用程序,我的存储库有一个从房间数据库查询数据并返回 LiveData 的方法,我的方法的签名是:

我想用下面的代码为这个方法写一个单元测试:

但是测试失败并显示以下失败消息。

io.kotest.assertions.AssertionFailedError: 预期:androidx.lifecycle.MutableLiveData@1afc7182 但是是:<kotlin.Unit>

谁能帮我指出我错在哪里以及如何使用kotest库和Mockk库编写单元测试用例。

0 投票
3 回答
131 浏览

kotlin - 断言每个对象属性都匹配 kotlin 测试中的给定谓词

我有一个对象集合:

我想测试每个项目是否匹配给定的字段谓词。

是否有任何断言kotlintest assertions可以让我这样做?

就像是:

0 投票
1 回答
176 浏览

unit-testing - 是否有 Kotest 断言来测试列表是否包含具有给定属性的某些元素?

我有两个具有一些共同特征的对象,我想比较它们

我想断言 aList<Car>中的某些元素包含与给定的颜色和所有者相同的元素Pet

这是一个假代码示例来说明我正在尝试做的事情:

我如何使用 kotest 做到这一点?我可以使用 assertJ 的 anySatisfy 断言来完成所需的功能。

0 投票
1 回答
212 浏览

kotlin - 使用 runBlockingTest{} 测试 Kotlin 协程失败

我创建了一个简单的 Micronaut Kotlin Coroutines 示例,希望使用kotlin-corotines-test. 我已经添加了kotlin-corotines-test依赖项。

我尝试使用runBlockingTest,但以下测试(Kotest/FuncSpec)失败。

并抛出这样的异常。

但如果runBlocking在有趣的身体中使用,它会起作用。

更新:从问题Kotlin/kotlinx.coroutines#1204获取解决方案,将 kotlin 协程更新到 1.6.0-RC 以解决它,并使用runTest而不是弃用的runBlockingTest.

0 投票
0 回答
15 浏览

kotest - 构建 CustomGenerator 时可以使用 .next() 吗?

假设,我已经有一个 CustomGenerator:

在基于第一个构建 CustomGenerator 时可以使用 .next() 吗?(我知道,那样的话,我会得到一个不同的种子。但是我需要关心它吗?在什么情况下我应该关心它?)

官方文档:https ://kotest.io/docs/proptest/custom-generators.html

0 投票
2 回答
133 浏览

kotlin - IntelliJ Kotest 不显示测试失败并出现异常

代码

我有以下三个测试:

问题

中间测试抛出了一个意外的异常。我希望看到 3 个测试运行,其中 1 个失败,但 IntelliJ 和 Kotest 插件向我展示的是 2 个测试中有 2 个通过了。我可以在“测试结果”侧面板中看到有些地方不对劲,但它没有任何有用的信息。

如果我导航到index.html测试结果,我可以正确看到所有内容。我想在 IntelliJ 中看到相同的数据。

截图

IntelliJ 输出: 智能输出 请注意:

  • 在左侧,缺少数字 1 的测试
  • 在顶部它说“测试通过:2 of 2”
  • 左边有黄色的叉到“Given”,但“Given”中的所有测试都是绿色的

index.html与测试结果: 测试结果为 html

其他信息

  • Kotest 版本:4.6.3
  • IntelliJ Kotest 插件版本:1.1.49-IC-2021.2.3

IntelliJ Kotest 插件

0 投票
1 回答
33 浏览

unit-testing - kotest 等效于 assertJ 中的 usingElementComparatorIgnoringFields

assertJ 允许您检查元素列表是否相等,同时忽略用户指定的字段,如下所示

我无法在 kotest 中找到任何等效功能。有没有等价物?

0 投票
0 回答
35 浏览

kotlin - 在 kotest 中,有没有办法为它所在的 TestContainer 运行一次“之前”挂钩?

我正在尝试使用 Kotest 编写嵌套测试,这些测试具有每个嵌套级别仅运行一次的钩子。这就是 mocha 在 JavaScript 中的工作方式以及 RSpec 在 ruby​​ 中的工作方式。在 mocha 中,该函数被调用before。我尝试使用beforeContainer,但它为每个嵌套容器运行一次,而不是为整个容器运行一次,包括该父容器中的任何嵌套容器。这很难解释,所以下面是一组我希望通过的测试,如果beforekotest 中存在行为类似于 mocha 或 RSpec 的方法。简而言之,每个before方法应该只被调用一次,并且只有在其容器中的测试运行时(例如,before内部的方法在"nested level 2"测试运行之前不应该"nested level 1"运行)。

before如果我制作第一个abeforeSpec和另外两个beforeContainer(并将它们移动到每个嵌套容器上方),我可以接近我想要的,但随后counterTwo会增加两次:一次 for"nested level 1"和一次 for "nested level 2"。我不确定我是否只是做错了什么,或者这个功能在 kotest 中根本不存在。

0 投票
1 回答
9 浏览

kotest - 什么取代了现在移除的 Kotest 箭头匹配器 shouldBeSome 函数变体?

在之前的 kotest-assertions-arrow 版本中,可以这样写:

我刚刚升级到 v1.2.1,这个变种已经被删除了。仅保留文字值变体

什么取代了旧风格?