【发布时间】:2018-09-06 23:14:34
【问题描述】:
Kotlin 可以自动为主要的构造函数参数创建 getter(这很棒),并且所有这些 getter 默认情况下都是最终的(未打开)。 我有一门课(在 Kotlin 中):
open class SongCategory(val id: Long,
val type: SongCategoryType,
val name: String? = null,
var displayName: String? = null,
var songs: List<Song>? = null) {
}
我想在一些 Mockito 测试(Java 中)中使用它:
SongCategory songCategory = mock(SongCategory.class);
// the line below produces MissingMethodInvocationException
when(songCategory.getDisplayName()).thenReturn("Dupa");
这会产生 MissingMethodInvocationException,因为 Mockito 需要打开模拟类(不是最终的),而模拟方法 getDisplayName() 必须打开,但事实并非如此。
我无法打开此 getter 或创建另一个覆盖 getter,因为它与为构造函数自动创建的最终 getter 冲突。
我可以将这些所有参数移动到辅助构造函数并分别创建所有属性和 getter。但是,如果我必须编写与 Java 相同的样板代码,那么使用 Kotlin 有什么意义呢?
有没有办法将 Mockito 与 Kotlin 编译的 getter 一起使用?
【问题讨论】:
标签: java kotlin mockito getter