Mar*_*k D 6 junit android mockito kotlin mockk
class A
当我们在测试中创建一个新的值时,它会初始化我们的值,并且在init
块中将值传递给class B
,只有在值获取器被模拟之后。
主要问题是我想将模拟值传递给 init block 中的 B 类。
为什么我需要那个?
假设class A
实现了一些由使用这些 Val 的内部逻辑触发的回调class B
,我们需要测试这些类之间的契约。
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*
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3015 次 |
最近记录: |