【问题标题】:Can Mockito be used to match parameters that are functions in Kotlin?Mockito 可以用来匹配 Kotlin 中函数的参数吗?
【发布时间】:2018-07-16 23:11:10
【问题描述】:

我有一个原型的函数,类似于:

class objectToMock {

    fun myFunc(stringArg: String, booleanArg: Boolean = false, functionArg: (String) -> Any = { 0 }): String

}

我希望能够存根myFunc,但不知道怎么做。类似的东西

@Mock
lateinit var mockedObject: ObjectToMock

@Before
fun setup() {
    MockitoAnnotations.initMocks(this)
    `when`(mockedObject.myFunc(anyString(), anyBoolean(), any())).thenReturn("")
}

使用any() 和notNull() 都导致java.lang.IllegalStateException: any() must not be null

【问题讨论】:

    标签: kotlin mockito


    【解决方案1】:

    这里的解决方案是使用https://github.com/nhaarman/mockito-kotlin 中的anyOrNull,或者自己实现那个助手。

    【讨论】:

      【解决方案2】:

      Mockito 在调用 any()、eq() 等方法时经常返回 null。将这些实例传递给未正确模拟的方法可能会导致 NullPointerExceptions

      见:https://github.com/nhaarman/mockito-kotlin/wiki/Parameter-specified-as-non-null-is-null

      【讨论】:

        【解决方案3】:

        你可以添加

        mockedObject = ObjectToMock()
        

        @Before 是初始化的地方。 @Test 是测试的地方,可以调用mockedObject.myFunc()

        【讨论】:

        • 我试图模拟对象,而不是实例化它。
        猜你喜欢
        • 1970-01-01
        • 2012-09-23
        • 2014-05-27
        • 1970-01-01
        • 2020-06-30
        • 1970-01-01
        • 1970-01-01
        • 2011-11-21
        相关资源
        最近更新 更多