Как использовать SpannableString в Android UnitTests - PullRequest
1 голос
/ 05 июля 2019

Я только что наткнулся на проблему снова, где я еще не нашел решения, поэтому я подумал, что я спрошу вас :)

Предположим, у меня есть следующий метод (Kotlin):

fun getValue(): SpannableString {

    val value = "MyTestValue"
    val subString = "Test"

    // init spannable string
    val spannableString = SpannableString(value)

    // get position of substring
    val position = value.indexOf(subString)

    // insert span
    spannableString.setSpan(BackgroundColorSpan(ContextCompat.getColor(context, R.color.yellow)), position, position + subString.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)

    // return result
    return spannableString
}

И это мой метод Unit-Test:

@Test
fun `value | on filter | returns correct value`() {

    // define mock behavior
    val model = TestUtils.getTestModel() //returns a test model

    // init Observable
    val observable = TestObservable(model)

    // check assertions
    assertEquals("???", observable.getValue()) // I don't know what to expect here
}

Если я сейчас хочу проверить этот метод в модульном тесте, я всегда получаю 'null' в качестве ответа, потому что SpannableString возвращает это значение.Я знаю, что мог бы запустить тест в контексте androidTest, но там модульные тесты не имеют никакого отношения (на мой взгляд).

Я думаю, что должен быть какой-то способ проверить это без запуска эмулятора.

Есть предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...