我将翻译以下内容:
这很好。现在我可以在任何
我不想试图模拟
在此模式下,我无法确定如何将实现实例传递给委托。
我正在尝试弄清楚如何在Kotlin中将依赖项注入接口委托。 我有一个类:
我正在尝试解决如何在 Kotlin 中将依赖项注入到接口委托中的问题。下面是我的一个类:class MyThingie {}
我希望在这个类中添加一个字段created_time
,这个字段也可能会被添加到其他类中。因此,我可以创建一个接口和其实现的实例,然后将该委托添加到类定义中:
interface ThingieWithCreatedTS {
val created_ts: Long
}
object ThingieCreatedAtNow : ThingieWithCreatedTS {
override val created_ts: Long = System.currentTimeMillis()
}
class MyThingie : ThingieWithCreatedTS by ThingieCreatedAtNow {}
这很好。现在我可以在任何
MyThingie
实例上调用created_ts
并获取其创建时间戳。但是,这现在很难测试。我不想试图模拟
System
,我理解正确的模式是将某种时钟实例注入到需要知道当前时间的任何内容中。这样,我可以在代码中提供RealClock,在测试中我可以提供FakeClock(我可以控制输出)。在此模式下,我无法确定如何将实现实例传递给委托。