Не удалось найти «store» в контексте «Connect (Home)» при тестировании модуля «Собственный шутник»? - PullRequest
2 голосов
/ 02 марта 2020

Я новичок, чтобы реагировать на родных. пытаясь написать блок тестовых случаев. но я получаю следующее сообщение об ошибке.

Мои тестовые случаи не проходят как показано ниже

Не удалось найти «store» в контексте «Connect (Home)». Либо оберните компонент root в a, либо передайте пользовательский поставщик контекста React и соответствующий потребитель контекста React для Connect (Home) в параметрах соединения.

home. js

/* eslint-disable import/no-extraneous-dependencies */
/* eslint-disable no-unused-vars */
import React, { Component } from 'react';
import { ActivityIndicator } from 'react-native-paper';
import {
  View, Text, FlatList, TouchableOpacity,
} from 'react-native';
import { connect } from 'react-redux';
//import { Ionicons } from '@expo/vector-icons';
import styles from './style';
import { listRepos } from '../../reducer/reducer';
import ErrorAlert from '../../common/errorAlertComponent/errorAlert';


class Home extends Component {
  componentDidMount() {
    this.props.listRepos();
  }

  FlatListItemSeparator = () => (
    <View style={styles.flatListItemSeparator} />
  )

  renderItem = ({ item }) => (

    <View style={styles.listRowContainer}>

      <TouchableOpacity onPress={() => this.props.navigation.navigate('ThumbnailViewScreen', {
        albumID: item.id,
      })} style={styles.listRow}>
        <View style={styles.listTextNavVIew}>
          <Text style={styles.albumTitle}> {item.title} </Text>
        </View>
      </TouchableOpacity>

    </View>
  );

  render() {
    const { error, loading, albums } = this.props;

    if (error) {
      return <ErrorAlert />;
    }

    if (loading) {
      return (
        <View style={{ flex: 1, paddingTop: 30 }}>
            <ActivityIndicator animating={true} size='large' />
        </View>
      );
    }
    return (
      <View style={styles.MainContainer} >
        <FlatList
          styles={styles.container}
          data={albums}
          renderItem={this.renderItem}
          ItemSeparatorComponent={this.FlatListItemSeparator}

        />
      </View>
    );
  }
}

const mapStateToProps = (state) => {
  const storedRepositories = state.albums.map((repo) => ({ key: repo.id.toString(), ...repo }));
  return {
    albums: storedRepositories,
    loading: state.loading,
    error: state.error,
  };
};

const mapDispatchToProps = {
  listRepos,
};

export default connect(mapStateToProps, mapDispatchToProps)(Home);

home.test. js

/* eslint-disable max-len */
/* eslint-disable import/no-extraneous-dependencies */
/* eslint-disable no-unused-vars */
/* eslint-disable no-undef */
import React, { Component } from 'react';
import 'react-native';
import { shallow } from 'enzyme';
import expect from 'expect';

import renderer from 'react-test-renderer';

import __Home from '../component/HomeComponent/home';


describe('home  Screen', () => {
  it('should render home component', () => {
    const wrapper = shallow(
        <__Home navigation={{ getParam: jest.fn() }} />,
    );
  });

  });

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

Возможно, вы инициализировали магазин в App. js, используйте этот код здесь, например,

, я не знаю, какое промежуточное ПО и редуктор вы использовали, но вы можете иметь представление об этом код.

import React from 'react';

import renderer from 'react-test-renderer';
import {Provider} from 'react-redux';
import {createStore, applyMiddleware} from 'redux';
import ReduxThunk from 'redux-thunk';
import reducersAll from '../../reducers';

const store = createStore(reducersAll, {}, applyMiddleware(ReduxThunk));

test('renders correctly', () => {
  const navigation = {state: {params: ''}, getParam: jest.fn()};
  const tree = renderer
    .create(
      <Provider store={store}>
        <Home navigation={navigation} />
      </Provider>,
    )
    .toJSON();
  expect(tree).toMatchSnapshot();
});
0 голосов
/ 02 марта 2020

Вы должны использовать пакет redux-mock-store для макетирования хранилища, если вы хотите протестировать подключенный компонент.

https://github.com/dmitry-zaets/redux-mock-store

...