Я получаю эту ошибку -:
Неизменное нарушение: не удалось найти «store» ни в контексте, ни в свойствах «Connect (Login)». Либо оберните корневой компонент в a, либо явно передайте "store" в качестве опоры для "Connect (Login)"
Мой Index.js
import React from 'react';
import ReactDOM from 'react-dom';
import './fonts/stylesheet.css';
import './index.css';
import Routes from "./routes";
import registerServiceWorker from './registerServiceWorker';
import reducer from './reducers';
import { createStore, applyMiddleware } from 'redux';
import { Provider } from 'react-redux';
import thunk from 'redux-thunk';
const middleware = [ thunk ]
const store = createStore(
reducer,
applyMiddleware(...middleware)
)
ReactDOM.render(
<Provider store = {store}>
<Routes />
</Provider>,
document.getElementById('root')
);
registerServiceWorker();
И Login.js - это
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { setLoginStatusAndPartnerName } from '../actions';
import Header from './header';
import Footer from './footer';
class Login extends Component {
constructor() {
super();
this.state = {
emailId: "",
isError: false,
partner: "",
loginStatus: false
};
this.checkEmail = this.checkEmail.bind(this);
this.handleChangeEvent = this.handleChangeEvent.bind(this);
}
handleChangeEvent({ target }) {
this.setState({
[target.name]: target.value,
isError: false
});
}
render() {
return (
<div>
<div className = "App">
<Header/>
<div className = "login-container">
<form onSubmit = {this.checkEmail}>
<div className = "email-id">
<label>
Email Address
</label>
<input type = "text" value = { this.state.emailId }
onChange = { this.handleChangeEvent } name = "emailId"/>
</div>
</form>
</div>
</div>
<Footer/>
</div>
);
}
}
function mapStateToProps(state) {
const { loginStatus= false, partner='' } = state;
return{
loginStatus,
partner
}
}
function mapDispatchToProps(dispatch){
return {
sendLoginStatusAndInfo: (loginStatus , partner) => {
dispatch(setLoginStatusAndPartnerName(loginStatus , partner));
}
}
}
export default connect(mapStateToProps, mapDispatchToProps)(Login);
Мой login.test.js
import React from 'react';
import ReactDOM from 'react-dom';
import { shallow, mount, render } from 'enzyme';
import Login from '../components/login';
describe('Login Component render', () => {
it('login renders without crashing', () => {
const div = document.createElement('div');
ReactDOM.render(<Login />, div);
});
it('checking whether the login form is present or not', () => {
expect(shallow(<Login />).exists(<form></form>)).toBe(true)
})
it('renders a label of login form', () => {
expect(shallow(<Login />).find('label').length).toEqual(1)
})
it('renders input box of login', () => {
expect(shallow(<Login />).find('input').length).toEqual(1)
})
it('renders the login information text', () => {
expect(shallow(<Login />).find('.login-info-text').length).toEqual(1)
})
});
Я не уверен, что делаю не так, но все тестовые примеры не работают с одной и той же ошибкой.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


import { HashRouter, Route, Switch } from 'react-router-dom';
ReactDOM.render((
<Provider store = {store}>
<HashRouter history = {history}>
<Switch>
<Route path = "/" name = "Home" component = {Full} />
</Switch>
</HashRouter>
</Provider>
), document.getElementById('root'));
Это лучшая практика из шаблона CoreUi. Возможно ли, что маршруты в вашем повторном проекте не возвращают компонент?
Это потому, что вы пытаетесь протестировать компонент connected Login, но вам, вероятно, следует протестировать необработанный компонент.
Добавьте export в определение вашего компонента, например:
export class Login extends Component
И импортируйте не по умолчанию (connected), а необработанный компонент в свой тест:
import {Login} from '../components/login';