问题描述
当我们在测试中创建一个新的class A
时,它会初始化我们的值,并且在init
块中,将值传递给class B
,只有在模拟了值获取器之后。 / p>
主要问题是我想将模拟值传递给init块中的B类。
我为什么需要那个?
假设class A
实现了一些由class B
触发的回调,该回调的内部逻辑正在使用这些Val,我们需要测试这些类之间的协定。
class A(
private val b: B
) {
val val1: SomeVal = SomeVal()
val val2: SomeVal = SomeVal()
init {
b.setVals(val1,val2)
}
fun doSomeWork() {
b.doAnotherWork()
}
}
classB {
private lateinit var val1: SomeVal
private lateinit var val2: SomeVal
fun setVals(a: SomeVal,b: SomeVal>) {
val1 = a
val2 = b
}
fun doAnotherWork(): Int {
return val1.someInt + val2.someInt
}
}
class ATest {
private lateinit var a: A
private lateinit var val1: SomeVal
private lateinit var val2: SomeVal
@Before
fun setup() {
val b = mockk<B>()
a = spyk(A(b))
val1 = mockk(relaxed = true)
val2 = mockk(relaxed = true)
every { a.val1 } returns val1
every { a.val2 } returns val2
}
@Test
fun test() {
every { val1.someInt } returns 4
every { val2.someInt } returns 6
*someAssertion*
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)