gpt4 book ai didi

kotlin - 使用 mockk 模拟常量值

转载 作者:行者123 更新时间:2023-12-02 13:34:50 27 4
gpt4 key购买 nike

我们目前有一个仅由常量值组成的对象。

object Constants {
const val VERSION = V1
}

但是,这些常量的值将来可能会更改。因此,如果 VERSION 不满足某些条件,我想确保测试中断。值(value)。我们使用 Mockk 进行模拟,所以我尝试模拟 Constants对象根据 docs像这样
mockkObject(Constants)
every { Constants.VERSION } returns -1
assertThat(Constants.VERSION).isEqualTo(-1)

不幸的是,这不会编译并出现以下错误: io.mockk.MockKException: Missing calls inside every { ... } block.
有没有办法模拟常量值?或者我应该为常量提供 getter 方法并模拟这些方法吗?

最佳答案

kotlin 中的常量 don't have getters这就是您的异常背后的原因:io.mockk.MockKException: Missing calls inside every { ... } block .没有可以模拟来检索值的函数。

我建议您重新考虑测试常量的目标(这不是典型的测试用例),或制定解决方法。解决方法可能是:

  • 为每个要模拟的常量创建一个 getter
  • Constants在另一个类中,它将返回 Constants对象,您可以测试每个字段(使用 assertJ fieldByField )
  • 将 const 值放在可以测试的文本或属性文件中
  • 关于kotlin - 使用 mockk 模拟常量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58877491/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com