Тестирование textview отображает текст как HTML - PullRequest
1 голос
/ 03 февраля 2020

Я пытаюсь проверить текстовое представление в моем фрагменте. В моем пользовательском интерфейсе textview отображает текст HTML, используя HtmlCompat api, как показано ниже:

tvNoDeals.text = HtmlCompat.fromHtml(getString(R.string.no_deals), HtmlCompat.FROM_HTML_MODE_LEGACY)

Моя цель - проверить это поведение с помощью android Test, используя Espresso . Для этого мне нужно использовать фиктивный контекст, чтобы получить мою строку из файла. xml строки. У меня вопрос, я вынужден смоделировать контекст или есть другие способы проверить, соответствует ли строка?

class RetailDealsTest : RetailTest() {

    lateinit var context: Context

    @Before
    fun setup() {
        context = getInstrumentation().targetContext
    }

    @Test
    fun testNoDealsUi() {
        val retail = getRetail(totalDeals = 0)
        launchScenario(retail)
        onView(withId(R.id.lNoDeals))
            .check(matches(isDisplayed()))
        onView(withId(R.id.lDeals))
            .check(matches(not(isDisplayed())))
        onView(withId(R.id.tvNoDeals))
            .apply {
                check(
                    matches(
                        withText(
                            HtmlCompat.fromHtml(
                                context.getString(R.string.no_deals),
                                HtmlCompat.FROM_HTML_MODE_LEGACY
                            ).toString()
                        )
                    )
                )
            }
        Thread.sleep(10000)
    }

    private fun launchScenario(retail: Retail): FragmentScenario<RetailDealsFragment> {
        val fragmentArgs = Bundle().apply {
            putParcelable(Constants.RETAIL_ID, retail)
        }

        return launchFragmentInContainer<RetailDealsFragment>(
            fragmentArgs
        )
    }
}

1 Ответ

2 голосов
/ 03 февраля 2020

Чтобы получить Context насмешливый, вы хотите использовать

val context: Context = InstrumentationRegistry.getInstrumentation().targetContext

Если вам нужны ресурсы

var resources: Resources = InstrumentationRegistry.getInstrumentation().targetContext.resources
//Then find the string using
resources.strings(your_id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...