gpt4 book ai didi

android - 在 Mockito 中使用访问器模拟 kotlin 属性

转载 作者:搜寻专家 更新时间:2023-11-01 07:43:55 25 4
gpt4 key购买 nike

我的应用程序类 (Kotlin) 中有一个基于 SharedPreferences 值的 token 属性

    var token : String?
get() = PreferenceManager.getDefaultSharedPreferences(applicationContext)
.getString(TOKEN_PEREF_TAG, null)
set(value) {
PreferenceManager.getDefaultSharedPreferences(applicationContext)
.edit()
.putString(TOKEN_PEREF_TAG, value)
.apply()
}

问题是我不能像这样设置模拟值:

whenever(app.token).thenReturn("token")

因为我得到错误

java.lang.RuntimeException: Method getDefaultSharedPreferences in android.preference.PreferenceManager not mocked.

mock 不应该只返回提供的字符串吗?

如何解决这个错误?

最佳答案

您可以使用 mockito-inline 依赖项而不是 mockito-core 依赖项来修复此错误。这使用了不同的模拟方法来规避平台类不可用的问题。它也特别有用,因为它允许您 mock final classes ,因此无需将每个类放在接口(interface)后面或在 Kotlin 中将它们标记为 open

这个内联模拟方法也可以通过 configuration file 打开。 ,但是我发现仅使用内联依赖项更加可靠。

关于android - 在 Mockito 中使用访问器模拟 kotlin 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48833937/

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