0
내 경로가 제대로 설정되었는지 확인하려고합니다. 특정 URI가있는 경우와 마찬가지로 적절한 구성 요소가로드됩니다. 우연히 경로를 잘못 입력하는 것을 막기 위해서.반응 라우터 v4 라우팅과 redux 연결 구성 요소 테스트
import React from 'react';
import {connect} from 'react-redux';
export const ConnectPage = (props) => {
return <div>{props.code}</div>;
};
export default connect(
(state) => ({}),
(dispatch) => ({})
)(ConnectPage);
메인 페이지 :
import React from 'react';
import {Route, Switch, Redirect} from 'react-router-dom';
import qs from 'query-string';
import MainPage from './MainPage';
import ConnectPage from './ConnectPage';
class Routes extends React.Component {
render() {
return (<Switch>
<Route path={'/connect/:provider'} render={(matches) => {
const search = qs.parse(matches.location.search);
if (search.code) {
return <ConnectPage code={search.code}/>;
}
return <Redirect to={'/'}/>;
}}/>
<Route exact path={'/'} component={MainPage}/>
</Switch>
);
}
}
export default Routes;
을 그리고 여기에 내가 가진 문제에 봉착 내 테스트입니다 :
여기import React from 'react';
import LoginPage from './LoginPage';
const MainPage =() => (
<LoginPage/>
);
export default MainPage;
내 경로가 파일을 있어요 여기에
은 샘플 연결 페이지의 :import React from 'react';
import {mount} from 'enzyme';
import {MemoryRouter} from 'react-router';
import configureStore from 'redux-mock-store';
import Chance from 'chance';
import Routes from './Routes';
import MainPage from './MainPage';
import ConnectPage from './ConnectPage';
import {createProvider as Provider} from 'react-redux';
const chance = new Chance();
const middlewares = [];
let mockStore;
describe('The Routes',() => {
beforeAll(()=>{
mockStore = configureStore(middlewares);
});
it('loads the Main Page on /',() => {
const component = mount(
<MemoryRouter initialEntries={['/']} initialIndex={0}>
<Routes store={mockStore}/>
</MemoryRouter>
);
expect(component.find(MainPage).length).toBe(1);
});
it('redirects to the main page if no code',() => {
const url = '/connect/someprovider';
const component = mount(
<MemoryRouter initialEntries={[url]} initialIndex={0}>
<Routes/>
</MemoryRouter>
);
expect(component.find(MainPage).length).toBe(1);
});
it('loads the Connect Page on /connect/provider',() => {
const code = chance.word({length: 32});
const url = `/connect/provider?code=${code}`;
const component = mount(
<Provider store={mockStore}>
<MemoryRouter initialEntries={[url]} initialIndex={0}>
<Routes/>
</MemoryRouter>
</Provider>);
try {
expect(component.find(ConnectPage).length).toBe(1);
} catch (e) {
console.log('Used url:', url);
throw (e);
}
});
});
3 번째 테스트 패스를 만드는 방법을 이해할 수 없다. 나는 ConnectedPage가 적절할 때 적절한 위치에 놓 이도록하고 싶을뿐입니다. 이 상태에서
, 내가 얻을 :Warning: Functions are not valid as a React child. This may happen if you return a Component instead of <Component /> from render. Or maybe you meant to call this function rather than return it.
in createProvider (created by WrapperComponent)
in WrapperComponent
그래서 나는 내 방식의 오류를 발견했다.'mockStore'는 실제로 초기 상태를 통과해야하는 기능이다. 나는 stoopid ...와 함께있다. – meza