Я хочу протестировать следующий код:
<React.Fragment>
<Connect />
<FlatList
data = {[
{key: "pp", title: "Privacy Policy"},
{key: "tos", title: "Terms of Service"},
]}
renderItem = {({item}) => {
return (
<View
onPress = {() => this.handleOnPress(item.key)}
>
<Text>{item.title}</Text>
</View>
);
}}
/>
</React.Fragment>
Это мои тесты:
it("should render a FlatList with 2 items", () => {
const wrapper = shallow(
<Menu
/>
);
expect(wrapper).toMatchSnapshot();
expect(wrapper.props().data).toHaveLength(2);
});
По какой-то причине он не работает и показывает, что .data не определен. Я в основном хочу проверить, что в моем плоском списке 2 пункта.





Если я понимаю проблему, то похоже, что вы пытаетесь получить .props() из <Menu/> (оболочка), а не <FlatList/>, который является дочерним элементом оболочки.
Используя метод .childAt, вы сможете решить проблему со следующим:
it("should render a FlatList with 2 items", () => {
const wrapper = shallow(
<Menu
/>
);
expect(wrapper).toMatchSnapshot();
// expect(wrapper.props().data).toHaveLength(2);
expect(
wrapper // the wrapper of 'Menu'
.childAt(1) // the second child of the 'Menu' which is the 'FlatList'
.props() // the props of 'FlatList'
.data // the data field of 'FlatList' props
).toHaveLength(2);
});
Вот дополнительная информация о методе .childAt() - надеюсь, это поможет