React-Native 日历议程没有用于 Detox 的 testID
Posted
技术标签:
【中文标题】React-Native 日历议程没有用于 Detox 的 testID【英文标题】:React-NativeCalendar Agenda doesnt have testID for Detox 【发布时间】:2019-07-20 02:08:10 【问题描述】:我正在为我的 react-native 项目使用 detox,它有一个使用 react-native-calendar 中的 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
存储库的快速search 表明,testID
属性仅在 CalendarHeader
组件中受支持。
该库提供的其余组件似乎不支持testID
,但这并不意味着它们不能。
如果您查看 Detox troubleshooting guide 添加 testID
属性是状态:
解决方案:React Native 只支持原生上的
testID
属性 内置组件。如果您创建了自定义复合组件, 你必须自己支持这个道具。你应该可能 将 testID 道具传播给您渲染的孩子之一(内置 组件):
不幸的是,Agenda
组件不是您自己创建的,因此您无法对其道具进行太多控制。您可以采取一些措施:
-
创建一个问题,并希望 repo 开发团队中的某个人做出您想要的更改。
分叉库。现在,您可以完全控制组件。您将能够添加所需的
testID
道具。然后,您可以使用库的分叉版本。这可能很有用,但请注意,您必须维护分叉的 repo。您始终可以将更改作为 PR 提交,它可能会合并到实际版本中。
最快的解决方案显然是选项 2。然后您可以在 package.json
中使用您的分叉版本,如下所示:
"react-native-calendars": "your_github_name/react-native-calendars"
【讨论】:
以上是关于React-Native 日历议程没有用于 Detox 的 testID的主要内容,如果未能解决你的问题,请参考以下文章