在 Kotlin 中使用枚举验证方法调用
Verifying method call with enum in Kotlin
我正在尝试验证是否使用给定参数调用了方法。该参数是不可为 null 的枚举类型。所以我得到了异常 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))
}
抓包也不行。我能做什么,或者这真的是我认为的错误吗?
因为 Mockito 是为 Java 设计的,所以它不能很好地处理 Kotlin 的 null 检查。一个好的解决方案是使用 mockito-kotlin 扩展库:https://github.com/mockito/mockito-kotlin
它包括不会 return null 的匹配器的 Kotlin 版本。添加对 mockito-kotlin 的依赖,并确保导入 Kotlin 版本而不是 Java 版本。
我正在尝试验证是否使用给定参数调用了方法。该参数是不可为 null 的枚举类型。所以我得到了异常 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))
}
抓包也不行。我能做什么,或者这真的是我认为的错误吗?
因为 Mockito 是为 Java 设计的,所以它不能很好地处理 Kotlin 的 null 检查。一个好的解决方案是使用 mockito-kotlin 扩展库:https://github.com/mockito/mockito-kotlin
它包括不会 return null 的匹配器的 Kotlin 版本。添加对 mockito-kotlin 的依赖,并确保导入 Kotlin 版本而不是 Java 版本。