在 class 中测试 Kotlin 扩展
Testing Kotlin extensions inside a class
我知道可以 ,但是如何在 class 中测试 Kotlin 扩展?
class D
class C {
fun D.foo() {
println("123")
}
}
我应该将 D.foo
解释为 D
的私有还是可以对其进行单元测试?
foo
函数是C
上的public方法,但是由于一个方法调用不能有两个接收者,所以必须使用with
函数.像这样:
with(C()) {
D().foo()
}
使用 with
、apply
或 run
(或提供封闭 C
实例的任何其他方法)访问 foo
方法D
.
您不能直接访问它的原因是 D.foo
只能从类型 C
.
的实例访问
样本:
val c = C()
c.run { // apply or with
D().foo() // accessible
}
D().foo() // not accessible
下面的也可以,但是用法不是很好:
D().run {
C().run {
foo() // accessible
}
}
有趣的事情:this discussion提到支持多个接收器在积压中,但任何进一步的讨论都只是说不支持多个接收器并且没有计划支持它。也许以后会有支持,调用方法可能会更简单。
我知道可以
class D
class C {
fun D.foo() {
println("123")
}
}
我应该将 D.foo
解释为 D
的私有还是可以对其进行单元测试?
foo
函数是C
上的public方法,但是由于一个方法调用不能有两个接收者,所以必须使用with
函数.像这样:
with(C()) {
D().foo()
}
使用 with
、apply
或 run
(或提供封闭 C
实例的任何其他方法)访问 foo
方法D
.
您不能直接访问它的原因是 D.foo
只能从类型 C
.
样本:
val c = C()
c.run { // apply or with
D().foo() // accessible
}
D().foo() // not accessible
下面的也可以,但是用法不是很好:
D().run {
C().run {
foo() // accessible
}
}
有趣的事情:this discussion提到支持多个接收器在积压中,但任何进一步的讨论都只是说不支持多个接收器并且没有计划支持它。也许以后会有支持,调用方法可能会更简单。