测试父抽象类的通用方法

时间:2019-11-20 15:43:09

标签: unit-testing kotlin mocking mockito spy

我有这样的抽象类:

abstract class A(val x: String, y: String..){
fun <R1,R2>bla(request:R1):Response<R2>(..)
}

我还有扩展抽象的类:

class B(val bean1:Bean1, val bean2: Bean2): A(bean1.x, bean2.y){
fun doSomething(
  <R1,R2>bla(Object())
)}

我的测试如下:

@Mock
private lateinit var bean1:Bean1
@Mock
private lateinit var bean2:Bean2
private lateinit b:B
@BeforeAll
fun init(){
 MockitoAnnotations.initMocks(this)
 b = spy(B(bean1,bean2))
}

@Test
fun `Test`(){
 doReturn(Response()).when(b).bla<Class1,Class2>(Object())
}

如何在不调用实际实现的情况下测试方法'bla'? 在上述情况下,每次都会调用真正的实现。我尝试使用模拟代替间谍,但结果相同。

Halp!:)

1 个答案:

答案 0 :(得分:0)

我通过使用接口而不是抽象类解决了这个问题。