/ / Nie można odczytać właściwości „elementów” undefined - natywna reakcja, enzym, żart

Nie można odczytać własności "przedmiotów" nieokreślonego - natywnego, enzymu, żartu

Jestem nowy na Jest + Enzyme i robiłem trochętestuj w mojej aplikacji, wszystko było dobrze, dopóki nie spróbowałem przetestować zdarzenia onPress w jednym z moich komponentów, który renderuje ScrollView, który ma wewnątrz ListItem. Błąd jest: Cannot read property "items" of undefined

Poniżej znajduje się mój kod:

List.js

import React from "react";
import { Text, StyleSheet, Image, View, ScrollView, Alert} from "react-native";
import { ListItem, Button, Card } from "react-native-elements"
import {observer, inject} from "mobx-react";
import {StackNavigator} from "react-navigation";

@inject("ItemStore")
@observer
export default class List extends React.Component{
constructor(props){
super(props);
this.state = {
itemsSelected: [],
}
}

displayItem(item, index){
const {navigate} = this.props.navigation;
this.props.ItemStore.ItemStore.itemSelected(item);
navigate("OtherComp", {"index": index});
}

render(){
return(
<ScrollView>
{
this.props.ItemStore.items.length ?
this.props.ItemStore.items.map((item, i) => (
<ListItem roundAvatar avatar = {{uri: item.photo_uri}}
title = {item.name}
key = {i}
onPress = {this.displayItem.bind(this, item, i)}
onLongPress = {this.setitem.bind(this, i)}
containerStyle = {{ backgroundColor: this.state.itemsSelected.indexOf(i) >= 0 ? "#f1f1f1" : "#ffffff"}}
/>
)) : undefined
}
</ScrollView>
);
}

}

List.test.js

import "react-native";
import React from "react";
import Enzyme from "enzyme";
import MyList from "../../components/list/List";
import {shallow} from "enzyme";
import Adapter from "enzyme-adapter-react-16";
import sinon from "sinon";
import { ListItem } from "react-native-elements"

const ItemStore = require("../../stores/ItemStore").default;

Enzyme.configure({adapter: new Adapter()});

describe("ItemList", () => {
it("click list item", () => {
const wrapper = shallow(<MyList ItemStore={ItemStore.ItemStore} />)
const render = wrapper.dive();
const displayItem = sinon.spy(MyList, "displayItem");
render.find(ListItem).forEach(child => {
child.simulate("onPress");
});
expect(displayItem.calledOnce).toBe(true);
});
});

„Używam wielu sklepów, które powodują wywołanie” store.store

Odpowiedzi:

0 dla odpowiedzi № 1

Czy to nie powinno:

this.props.ItemStore.items.length

Być..

this.props.ItemStore.ItemStore.items.length?