Я пытаюсь написать тестовые примеры в React Native, используя Jest и Testing Library. У меня есть .map
функция, которая отображает компонент с TouchableOpacity
.
{data.map((item, index) => (
<SafeAreaView key={index}>
<ItemView data={item} index={index} />
{index >= data.length - 1 ? (
<View style={{ marginTop: 16 }} />
) : (
<View style={styles.itmSeperator} />
)}
</SafeAreaView>
))}
ItemView выглядит как
const ItemView = ({ data, index }) => (
<TouchableOpacity
testID="TouchablePress"
onPress={() => onPress(data)}
style={{
alignItems: "center",
paddingVertical: 16,
}}
>
<Text style={styles.text}>{data.name}</Text>
</TouchableOpacity>
);
Для приведенного выше, если я вызываю fireEvent(getByTestId("TouchablePress"), "press");
в файле тестов, тест получает файл, в котором указано, что обнаружено несколько компонентов с тем же идентификатором TouchablePress.
Есть предложения о том, как пройти этот тест, не потерпев неудачу?
getAllByTestId
, а затем выбрать первый, для которого действительно будет запущено действиеpress
. ИЛИ задайте для каждогоItemView
разныеtestID
на основе их значенияindex
, затем выберите нужный. - person juliomalves   schedule 20.06.2021getAllByTestId
, как показано в ссылке и как Хулио описывает выше. - person ggorlen   schedule 30.06.2021