android - Android Mockito - 模拟枚举?
问题描述
我正在尝试测试一种在给定字符串列表时返回枚举列表的方法。
这是枚举
enum class SupportedFeatures(val id: String) {
FEATURE_1("feature1"),
;
companion object {
fun getValueFromId(id: String): SupportedFeatures? {
values().forEach {
if (it.id == id) {
return it
}
}
return null
}
}
}
这是我正在尝试测试的方法
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
fun getFilteredList(from: List<String>): MutableList<SupportedFeatures> {
val to = mutableListOf<SupportedFeatures>()
from.forEach {
val supportedFeature = SupportedFeatures.getValueFromId(it)
if (supportedFeature != null) {
to.add(supportedFeature)
}
}
return to
}
我可以很容易地测试这个
featuresList.addAll(listOf("feature1", "feature2", "feature3"))
target = mutableListOf(SupportedFeatures.FEATURE_1)
Mockito.`when`(featureSelector.getFilteredList(featuresList)).thenReturn(target)
但问题是当我向SupportedFeatures
枚举添加更多功能时。如果我添加FEATURE_2("feature2")
到枚举中,测试会突然失败。虽然测试确实应该失败,但我想在不依赖当前业务逻辑的情况下测试方法的功能。
有没有办法SupportedFeatures
在测试类中模拟枚举?还是我没有以某种方式将方法分成更小的部分?
先感谢您!
解决方案
推荐阅读
- android - 可以看到任何图像
- go - 未能验证 ECDSA 签名
- android - 使用 camera2api 捕获多张图像会使预览在拍照时暂停片刻
- android - Android 仅字母数字,以编程方式(非 XML)
- python - 使用 Python 解析 XML 并打印整个元素
- http - 谷歌云负载均衡器不返回内容编码:gzip
- python - 删除 CSV 文件中不是以 python 中的数字开头的所有行
- sas - SAS PROC SQL - 如何将字符串转换为日期
- python - 在不同条件下在一行中接收不同数量的返回值
- microservices - 是否可以从可执行模式中获取类型定义?