Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
468 of 502 menu
◀ ▶

Метод waitForIdle

Метод waitForIdle у ComposeContentTestRule блокирует тест, пока очередь recompositions и анимаций не опустеет. Вызывают перед assertIsDisplayed, если UI меняется асинхронно. Параметров у метода нет.

Синтаксис

composeTestRule.waitForIdle()

Пример

Давайте подождём idle перед проверкой текста:

import androidx.compose.material3.Text import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.onNodeWithText import org.junit.Rule import org.junit.Test class WaitForIdleTest { @get:Rule val composeTestRule = createComposeRule() @Test fun waitsThenAsserts() { composeTestRule.setContent { Text(text = "abcde") } composeTestRule.waitForIdle() composeTestRule.onNodeWithText("abcde").assertIsDisplayed() } }

Тест проходит: после waitForIdle узел с "abcde" стабильно виден.

Пример

Давайте сменить текст в состоянии и снова дождаться idle:

import androidx.compose.material3.Text import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.onNodeWithText import org.junit.Rule import org.junit.Test class IdleAfterEffectTest { @get:Rule val composeTestRule = createComposeRule() @Test fun showsTextAfterEffect() { composeTestRule.setContent { val label = remember { mutableStateOf("abcde") } LaunchedEffect(Unit) { label.value = "12345" } Text(text = label.value) } composeTestRule.waitForIdle() composeTestRule.onNodeWithText("12345").assertIsDisplayed() } }

Тест проходит: LaunchedEffect успел подставить "12345" до assert.

Смотрите также

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить