首页 > 解决方案 > 如何将 mockk 与通用构造函数参数一起使用?

问题描述

所以我有一堂课

class Test<T : SomeListener> @Inject constructor(
     private val dependency1: Dependency1,
     private val listener: T
)

我正在尝试使用 mockk 为它编写一个单元测试,并在尝试使用泛型类型模拟和初始化它时遇到错误。

class TestTest {
     @MockK
     lateinit var dependency1: Dependency1
     @MockK
     lateinit var listener: ListenerImpl

     @InjectMockKs(overrideValues = true)
     lateinit var testObject: Test<ListenerImpl>
}

我不断收到错误“io.mockk.MockKException:找不到匹配的构造函数:...侦听器:T =

使用此通用参数值正确模拟构造函数的正确方法是什么?

标签: androidandroid-testingmockk

解决方案


不幸的是,我无法找到一种纯粹使用注释的方法。我最终做的是:

class TestTest {
     @MockK
     lateinit var dependency1: Dependency1
     @MockK
     lateinit var listener: ListenerImpl

   
     lateinit var testObject: Test<SomeListener>

     @BeforeEach
     fun setUp() {
         testObject = Test(
              dependency1,
              listener
          )
     }
}

这有效并正确初始化了 testObject。


推荐阅读