如何在Kotlin中测试/访问伴侣对象扩展功能?

时间:2019-01-23 08:56:26

标签: junit kotlin junit5 kotlin-extension

我有一个Base64Util类,其中包括一个扩展功能decodeBase64ToByteArray

class Base64Util {
  companion object {
    fun String.decodeBase64ToByteArray(): ByteArray {
        return Base64.getUrlDecoder().decode(this)
    }
  }
}

现在,我想通过Base64Util测试我的Base64IUtilTest。我当然可以访问非扩展功能,但是如何从String.decodeBase64ToByteArray()访问/测试Base64UtilTest

1 个答案:

答案 0 :(得分:3)

您不能仅从外部访问成员扩展功能,例如decodeBase64ToByteArray。仅当进入对象的定义范围时,这才可能:

with(Base64Util.Companion){ //.Companion could be removed
    "123fsad123".decodeBase64ToByteArray()
}

例如,在文件base64Utils.kt中将util函数定义为顶级函数可能很有意义。这样,可以以静态方式调用它们,而不会出现任何问题。