Android Мокито - Дразнить перечисление? - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь проверить метод, который возвращает список перечислений, когда задан список строк.

это перечисление

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") к перечислению, тест неожиданно провалится. Хотя это правда, что тест должен провалиться, но я хочу проверить функциональность метода, не завися от текущей бизнес-логики c.

Есть ли способ высказать перечисление SupportedFeatures в тесте учебный класс? или я как-то не разделяю методы на более мелкие части?

Заранее спасибо!

...