Повестка дня React-NativeCalendar не имеет testID для Detox
Я использую detox для моего реактивного проекта, и в нем есть компонент календаря, использующий компонент Agenda из реактивного-календаря. Я ищу, чтобы добавить testID для компонента повестки дня, но, кажется, не один. Это мой код повестки дня.
<Agenda
items={this.state.items}
onDayPress={(day)=>{console.log('day pressed',day)}}
onDayChange={(day)=>{console.log('day changed')}}
pastScrollRange={50}
futureScrollRange={50}
renderItem={(item, firstItemInDay) => {return (<CalendarEvent EventID={item.EventID} navigation ={this.props.navigation}/>);}}
renderEmptyDate={() => {return (<EmptyEvent/>);}}
// specify what should be rendered instead of ActivityIndicator
//renderEmptyData = {() => {return (<EmptyEvent/>)}}
rowHasChanged={(r1, r2) => {return r1.text !== r2.text}}
// By default, agenda dates are marked if they have at least one item, but you can override this if needed
markedDates={markedDates}
theme={{
backgroundColor: '#203546',
calendarBackground: '#203546',
textSectionTitleColor: '#ffffff',
selectedDayBackgroundColor: '#203546',
selectedDayTextColor: '#ffffff',
todayTextColor: '#00adf5',
dayTextColor: '#ffffff',
textDisabledColor: '#ffffff',
dotColor: '#ffffff',
selectedDotColor: '#ffffff',
monthTextColor: '#ffffff',
textMonthFontWeight: 'bold',
textDayFontSize: 16,
textMonthFontSize: 20,
textDayHeaderFontSize: 15,
agendaDayTextColor: 'white',
agendaDayNumColor: 'white',
agendaTodayColor: '#00adf5',
agendaKnobColor: 'white'
}}/>
1 ответ
Быстрый поиск react-native-calendars
репо показывает, что testID
опора поддерживается только в CalendarHeader
составная часть.
Похоже, что остальные компоненты этой библиотеки не поддерживают testID
но это не значит, что они не могут.
Если вы посмотрите руководство по устранению неполадок Detox для добавления testID
Пропорция утверждает:
Решение: React Native поддерживает только
testID
опора на встроенные встроенные компоненты. Если вы создали собственный составной компонент, вам придется поддерживать эту опору самостоятельно. Вероятно, вам следует распространить подпрограмму testID на одного из ваших отрисованных дочерних элементов (встроенного компонента):
К сожалению Agenda
компонент - это не тот, который вы создали сами, поэтому вы не можете контролировать его свойства. Есть несколько вариантов действий, которые вы можете предпринять:
- Создайте проблему и надейтесь, что кто-то из команды разработчиков репозитория сделает нужное вам изменение.
- Вилка библиотеки. Это теперь даст вам полный контроль над компонентом. Вы сможете добавить
testID
реквизит, который вам требуется. Затем вы можете использовать свою раздвоенную версию библиотеки. Это может быть полезно, но учтите, что вам придется поддерживать раздвоенный репо. Вы всегда можете отправить изменение в качестве PR, и оно может быть объединено в фактическую версию.
Самым быстрым решением, очевидно, является вариант 2. Затем вы можете использовать свою раздвоенную версию в своем package.json
следующее:
"react-native-calendars": "your_github_name/react-native-calendars"