android - 如何使用 mockk 模拟 Build.VERSION.SDK_INT

标签 android testing kotlin android-testing mockk

如何在 mockk 中模拟 Build.VERSION.SDK_INT?

我做了以下事情:

@Test
fun testFoo(){
    mockkStatic(Build::class)
    mockkStatic(Build.VERSION::class)
    every {
        Build.VERSION.SDK_INT
    } answers { 22 }
}

我最终得到 io.mockk.MockKException: Missing calls inside every { ... } block. 一旦代码命中 every block 。

最佳答案

您可以像这样围绕构建配置构建一个包装器

object MyAppBuildConfig {
    fun getVersionSDKInt(): Int {
        return Build.VERSION.SDK_INT
    }
}

然后用 mockkObject 模拟 MyAppBuildConfig 并返回你想要的版本号

    mockkObject(MyAppBuildConfig)
    every { MyAppBuildConfig.getVersionSDKInt() } returns 22

关于android - 如何使用 mockk 模拟 Build.VERSION.SDK_INT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54356739/

相关文章:

java - 即使 onDestroy 被触发,我的服务也不会停止

android - 如何在 Eclipse 中重构 R.java 的包

unit-testing - 在测试中覆盖 Go 方法

android - 什么是android :ems in android application design

testing - 使用具有动态行为的 EasyMock 模拟 void 函数

testing - 在不同的 MultiJob 阶段运行相同的作业

java - 使用 azure.keyvault.secret.property-sources 时 Spring Boot 应用程序启动失败并丢失日志

junit - NotAMockException/如何在 Kotlin 的参数化测试中 stub 值?

找不到用于 native react 的 Android SDK

Android GraphicBufferAlloc::createGraphicBuffer(w=1232, h=800) 失败(内存不足)