我正在使用mockk库来测试我的业务逻辑。我有我想要测试的交互设备。我的interactor在构造函数数据类中检索。Fox例子:
data class Test(
var data1: Data1? = null,
var data2: Data2? = null,
var data3: Data3? = null
// etc
)
data class Data1(var nestedData: String)
data class Data2(var test: String)
data class Data3(var test: String)在我的测试中,我试图进行部分的嘲弄:
@MockK
private lateinit var test: Test
@Test
fun `test`() {
every { test } returns mockk {
every { data1 } returns mockk {
every { nestedData } returns "test"
}
}
}我得到了错误:
缺失模拟每个{.}块中的调用:确保块中的对象是模拟的io.mockk.MockKException:在每个{.}块中缺少模拟调用:确保块内的对象是模拟的
我也试着这样写:
every { test } returns mockk {
every { data1 } returns Data1("test")
}我也会犯同样的错误。@RelaxedMockK也不起作用。
为什么会发生这种事?请帮帮我。
发布于 2022-07-20 11:39:05
你在嘲弄它两次,你不需要它。删除第一个模拟,您将得到如下内容:
private lateinit var test: Test
@Test
fun `test`() {
test = mockk(relaxed = true) {
every { data1 } returns mockk {
every { nestedData } returns "test"
}
}
}如果需要为每个测试设置相同的测试,则可以将创建模拟对象的这一部分移动到@ same函数。
https://stackoverflow.com/questions/72999951
复制相似问题