首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mockK中的存根定向配置安卓资源

mockK中的存根定向配置安卓资源
EN

Stack Overflow用户
提问于 2021-05-26 01:57:29
回答 1查看 53关注 0票数 0

我正在尝试使用MockK将Configuration实例的orientation值存根到Resources上,这样我就可以在我的应用程序中测试一些横向和纵向行为。

不幸的是,我遇到了一些我从未见过的轻松模仿的事情。

代码语言:javascript
复制
import android.content.res.Configuration
import android.content.res.Resources

...

    @Test
    fun `When behavior, verify result based on orientation`() {

        val resources = mockk<Resources>(relaxed = true) {
            every { configuration } returns mockk(relaxed = true) {
                every { orientation } returns Configuration.ORIENTATION_LANDSCAPE // Line 36, see stack trace
            }
        }

        ...
    }

第36行抛出此异常:

代码语言:javascript
复制
io.mockk.MockKException: Missing calls inside every { ... } block.

    at io.mockk.impl.recording.states.StubbingState.checkMissingCalls(StubbingState.kt:14)
    at io.mockk.impl.recording.states.StubbingState.recordingDone(StubbingState.kt:8)
    at io.mockk.impl.recording.CommonCallRecorder.done(CommonCallRecorder.kt:47)
    at io.mockk.impl.eval.RecordedBlockEvaluator.record(RecordedBlockEvaluator.kt:60)
    at io.mockk.impl.eval.EveryBlockEvaluator.every(EveryBlockEvaluator.kt:30)
    at io.mockk.MockKDsl.internalEvery(API.kt:92)
    at io.mockk.MockKKt.every(MockK.kt:98)
    at com.my.app.OrientationTests.When behavior, verify result based on orientation(OrientationTests.kt:36)

...


Process finished with exit code 255

我真的不确定为什么要这么说,因为这是一个轻松的模仿。有没有人看过这个?我很难在网上找到任何提到如何使用mockk来存根资源和配置的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-26 06:08:01

这是一个Java-Kotlin interop for getters and setters隐藏底层实现的例子:

configuration实际上是Resources.getConfiguration() (方法调用),而orientationConfiguration.orientation ( Java字段,而不是方法调用)。

尽管它们在Kotlin方面看起来是一样的,但由于orientation不是一个可以模拟的方法调用,第二个every正在失败。

在这种情况下,可以在没有every的情况下直接设置orientation

代码语言:javascript
复制
    @Test
    fun `When behavior, verify result based on orientation`() {
        val resources = mockk<Resources> {
            every { configuration } returns mockk {
                orientation = Configuration.ORIENTATION_LANDSCAPE
            }
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67693266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档