【问题标题】:How can I test/access companion object extension functions in Kotlin?如何在 Kotlin 中测试/访问伴随对象扩展函数?
【发布时间】:2019-01-23 08:56:25
【问题描述】:

我有一个 Base64Util 类,其中包括一个扩展函数 decodeBase64ToByteArray

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

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

【问题讨论】:

  • 我会省略 classcompanion object,所以你基本上只有一个空函数(或只有 importpackage 语句)kt-file

标签: junit kotlin junit5 kotlin-extension


【解决方案1】:

您不能简单地从外部访问成员扩展功能,例如decodeBase64ToByteArray。这只有在您进入它定义的对象的范围内才有可能:

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

例如,将您的 util 函数定义为文件 base64Utils.kt 中的顶级函数可能是有意义的。这样,就可以毫无问题地以静态方式调用它们。

【讨论】:

  • 为什么'base64Utils.kt'中的b小写?这是 util 的标准吗?
猜你喜欢
  • 2016-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-31
相关资源
最近更新 更多