0

我正在尝试验证是否使用给定的参数调用了一个方法。该参数是不可为空的枚举类型。所以我得到了例外eq(SomeEnum.foo) must not be null。这是我正在尝试做的一个示例:

enum class SomeEnum {
    foo, bar
}

open class MyClass {
    fun doSomething() {
        magic(SomeEnum.foo)
    }

    internal fun magic(whatever: SomeEnum) {}
}

@Test
fun mockitoBug() {
    val sut = spy(MyClass())
    sut.doSomething()
    verify(sut).magic(eq(SomeEnum.foo))
}

捕获也不起作用。我能做什么,或者我认为这真的是一个错误吗?

4

1 回答 1

0

因为 Mockito 是为 Java 设计的,所以它不能很好地与 Kotlin 的 null 检查配合使用。一个好的解决方案是使用 mockito-kotlin 扩展库:https ://github.com/mockito/mockito-kotlin

它包括不会返回 null 的匹配器的 Kotlin 版本。添加对 mockito-kotlin 的依赖,并确保导入 Kotlin 版本而不是 Java 版本。

于 2021-10-29T07:34:24.817 回答