如何在Kotlin中创建ArgumentMatchers.any(type:Class <T>)进行测试?

时间:2019-06-20 13:20:04

标签: kotlin mockito mockito-kotlin

我正在尝试对使用以下服务的类进行单元测试:

parserService.parseJsonStringToModel(json: String, adapterClass: Class<T>): T?

我的第一种方法是使用ArgumentMatchers来执行单元测试,如下所示:

Mockito.`when`(parserService.parseJsonStringToModel(ArgumentMatchers.any(), ArgumentMatchers.any<CreateAccountRequest>().javaClass)).thenReturn(null)

由于ArgumentMatchers.any()在Kotlin中返回null,因此会为非可空类型生成NullPointerException。因此,我尝试使用Mockito-Kotlin库来避免此问题。该方法如下所示:

whenever(parserService.parseJsonStringToModel(any(), any<CreateAccountRequest>().javaClass)).thenReturn(null)

使用的库解决了第一个参数的问题,但仍为传递的第二个参数生成NullPointerException

那么,如何为ArgumentMatchers类型的参数创建Class<T>

1 个答案:

答案 0 :(得分:1)

您可以直接为Class<CreateAccountRequest>创建一个匹配器:

whenever(
    parserService.parseJsonStringToModel(
        any(),
        any<Class<CreateAccountRequest>>()
    )
).thenReturn(null)