未解决的参考:mockk

问题描述 投票:0回答:3

我已在

mockk
->
commonTest
模块中导入了
shared
库。测试类中没有导入错误,但是当我运行测试时,我收到如下错误:

Unresolved reference: every
Unresolved reference: mockk
Unresolved reference: verify

在我使用

mock
库方法的所有地方。错误的原因可能是什么?

我的测试示例在控制台中出现错误:

class DefaultAppPreferenceStorageTest {

    val appPreference = mockk<AppPreference>() //Unresolved reference: mockk
    val jsonService = mockk<JsonService>() //Unresolved reference: mockk

    val jsonKey = "key"
    val value = 1
    val stringValue = "$value"
    val defaultIntValue = Random.nextInt()

    val storage = DefaultAppPreferenceStorage(
        appPreference,
        jsonService
    )

    inner class PutJsonTest {

        @BeforeTest
        fun beforeEachTest() {
            every { jsonService.mapToString(value) } returns stringValue //Unresolved reference: every

            storage.putJson(jsonKey, value)
        }

        @Test
        fun testPutJson() {
            verify(verifyBlock = { jsonService.mapToString(value) }) //Unresolved reference: verify
            verify(verifyBlock = { appPreference.putString(jsonKey, stringValue) }) //Unresolved reference: verify
        }
    }

    ...
}

更新 依赖关系

const val mockk = "1.12.5"

const val mockk = "io.mockk:mockk-common:${Version.mockk}"
        val commonTest by getting {
            dependencies {
                implementation(kotlin("test"))
                implementation(kotlin("test-common"))
                implementation(kotlin("test-annotations-common"))
                implementation(ShareTestDependencies.mockk)
                implementation(ShareTestDependencies.coroutinesTest)
            }
        }
junit kotlin-multiplatform mockk
3个回答
6
投票

从mockk 1.12.5升级到1.13.2时,我看到了提到的错误(未解决的参考:每个和其他)。我可以通过添加对mockk-jvm的依赖项(而不是现有的mockk依赖项或在现有的mockk依赖项旁边)来解决这个问题。

        <dependency>
            <groupId>io.mockk</groupId>
            <artifactId>mockk-jvm</artifactId>
            <version>${mockk.version}</version>
        </dependency>

该问题已于早些时候得到解决(请参阅https://github.com/mockk/mockk/issues/889)并假设已解决。显然,并非所有情况都是如此。


5
投票

如果您使用 KMP 构建本机目标(iOS、Linux、Windows 等),mockk 不支持本机。它支持 JVM 和 JS,并具有支持这两个平台的通用源定义。 IDE 可能不会出现错误,因为有一个通用的模拟定义(尽管我从未尝试过)。

查看实际运行的测试任务。如果它是针对本机目标,那么肯定会发生这种情况。


0
投票

尽管在我的版本目录中正确添加了 Mockk 依赖项,但我也遇到了同样的问题,mockk() 没有得到解决。

当我自动生成测试类时,它转到

androidTest
源包,这导致了缺少依赖范围的问题。

将测试类移至

test package
源码包后解决了mockk函数。 enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.