如何在 Kotlin 中创建 ArgumentMatchers.any(type: Class<T>) 进行测试?
How to create ArgumentMatchers.any(type: Class<T>) for testing in Kotlin?
我正在尝试对使用以下服务的 class 进行单元测试:
parserService.parseJsonStringToModel(json: String, adapterClass: Class<T>): T?
我的第一个方法是使用ArgumentMatchers
实现单元测试如下:
Mockito.`when`(parserService.parseJsonStringToModel(ArgumentMatchers.any(), ArgumentMatchers.any<CreateAccountRequest>().javaClass)).thenReturn(null)
自从 Kotlin 中的 ArgumentMatchers.any()
returns null
以来,对于不可空类型产生 NullPointerException
。所以我尝试使用 Mockito-Kotlin 库来避免这个问题。该方法如下所示:
whenever(parserService.parseJsonStringToModel(any(), any<CreateAccountRequest>().javaClass)).thenReturn(null)
使用的库解决了第一个参数的问题,但仍然为传递的第二个参数生成 NullPointerException
。
那么,如何为 Class<T>
类型参数创建 ArgumentMatchers
?
您可以直接为 Class<CreateAccountRequest>
:
创建一个匹配器
whenever(
parserService.parseJsonStringToModel(
any(),
any<Class<CreateAccountRequest>>()
)
).thenReturn(null)
我正在尝试对使用以下服务的 class 进行单元测试:
parserService.parseJsonStringToModel(json: String, adapterClass: Class<T>): T?
我的第一个方法是使用ArgumentMatchers
实现单元测试如下:
Mockito.`when`(parserService.parseJsonStringToModel(ArgumentMatchers.any(), ArgumentMatchers.any<CreateAccountRequest>().javaClass)).thenReturn(null)
自从 Kotlin 中的 ArgumentMatchers.any()
returns null
以来,对于不可空类型产生 NullPointerException
。所以我尝试使用 Mockito-Kotlin 库来避免这个问题。该方法如下所示:
whenever(parserService.parseJsonStringToModel(any(), any<CreateAccountRequest>().javaClass)).thenReturn(null)
使用的库解决了第一个参数的问题,但仍然为传递的第二个参数生成 NullPointerException
。
那么,如何为 Class<T>
类型参数创建 ArgumentMatchers
?
您可以直接为 Class<CreateAccountRequest>
:
whenever(
parserService.parseJsonStringToModel(
any(),
any<Class<CreateAccountRequest>>()
)
).thenReturn(null)