我已在
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)
}
}
从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)并假设已解决。显然,并非所有情况都是如此。
如果您使用 KMP 构建本机目标(iOS、Linux、Windows 等),mockk 不支持本机。它支持 JVM 和 JS,并具有支持这两个平台的通用源定义。 IDE 可能不会出现错误,因为有一个通用的模拟定义(尽管我从未尝试过)。
查看实际运行的测试任务。如果它是针对本机目标,那么肯定会发生这种情况。