Метод performTextInput
Метод performTextInput у
SemanticsNodeInteraction
добавляет строку в focused editable узел.
Перед вводом поле находят через
onNodeWithTag
или
onNodeWithText,
иногда предварительно вызывают
performClick.
Синтаксис
composeTestRule.onNodeWithTag("note").performTextInput("abcde")
Параметры
| Параметр | Описание |
|---|---|
text |
Строка, которую набирают в поле. |
Пример
Давайте введём abcde и проверим значение:
import androidx.compose.material3.OutlinedTextField
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.test.assertTextEquals
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performTextInput
import org.junit.Rule
import org.junit.Test
class TextInputTest {
@get:Rule
val composeTestRule = createComposeRule()
@Test
fun typesNote() {
composeTestRule.setContent {
val value = remember { mutableStateOf("") }
OutlinedTextField(
value = value.value,
onValueChange = { value.value = it },
modifier = Modifier.testTag("note"),
)
}
composeTestRule.onNodeWithTag("note").performTextInput("abcde")
composeTestRule.onNodeWithTag("note").assertTextEquals("abcde")
}
}
Тест проходит: в поле появился текст "abcde".
Пример
Давайте допишем 12345 к уже введённой строке:
import androidx.compose.material3.OutlinedTextField
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.testTag
import androidx.compose.ui.test.assertTextEquals
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithTag
import androidx.compose.ui.test.performTextInput
import org.junit.Rule
import org.junit.Test
class AppendInputTest {
@get:Rule
val composeTestRule = createComposeRule()
@Test
fun appendsDigits() {
composeTestRule.setContent {
val value = remember { mutableStateOf("abcde") }
OutlinedTextField(
value = value.value,
onValueChange = { value.value = it },
modifier = Modifier.testTag("note"),
)
}
composeTestRule.onNodeWithTag("note").performTextInput("12345")
composeTestRule.onNodeWithTag("note").assertTextEquals("abcde12345")
}
}
Тест проходит: performTextInput дописал "12345"
к начальному "abcde".
Смотрите также
-
метод
assertTextEquals,
проверка после ввода -
метод
performClick,
фокус на поле перед вводом -
функция
OutlinedTextField,
поле в примере -
класс
SemanticsNodeInteraction,
где объявлен performTextInput