Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 酶试验限制路线_Reactjs_React Router_Enzyme_Jestjs - Fatal编程技术网

Reactjs 酶试验限制路线

Reactjs 酶试验限制路线,reactjs,react-router,enzyme,jestjs,Reactjs,React Router,Enzyme,Jestjs,因此,我基于react router(v4)中的Route并使用recompose中的branch方法创建了一个RestrictedRoute组件: import React from 'react'; import { connect } from 'react-redux'; import { compose, branch, renderComponent } from 'recompose'; import { Route, Redirect } from 'react-router-d

因此,我基于
react router(v4)
中的
Route
并使用
recompose中的
branch
方法创建了一个
RestrictedRoute
组件:

import React from 'react';
import { connect } from 'react-redux';
import { compose, branch, renderComponent } from 'recompose';
import { Route, Redirect } from 'react-router-dom';

const RestrictedRoute = (props) => {
  const { component, ...otherProps } = props;
  return <Route {...otherProps} component={component} />;
};

const mapStateToProps = state => ({
  authenticated: state.authentication.session,
});
const branched = branch(
  ({ authenticated }) => !authenticated,
  renderComponent(() => <Redirect to="/" />),
);

const enhanced = compose(
  connect(mapStateToProps),
  branched,
)(RestrictedRoute);

export default enhanced;
从“React”导入React;
从'react redux'导入{connect};
从“重新组合”导入{compose,branch,renderComponent};
从“react router dom”导入{Route,Redirect};
const RestrictedRoute=(道具)=>{
常量{component,…otherProps}=props;
返回;
};
常量mapStateToProps=状态=>({
已验证:state.authentication.session,
});
常数分支=分支(
({authenticated})=>!authenticated,
renderComponent(()=>),
);
常数增强=合成(
连接(MapStateTops),
分支,
)(限制路线);
出口违约率提高;
它工作得非常好,但是现在我需要编写一些测试来告诉我重定向是否正常工作,所以我做了以下工作:

import React from 'react';
import { shallow } from 'enzyme';
import { Provider } from 'react-redux';
import { Redirect, MemoryRouter } from 'react-router-dom';
import configureStore from 'redux-mock-store';
import RestrictedRoute from '../RestrictedRoute';
import { initialAuthenticationState } from 'Reducers/authentication';

describe('<RestrictedRoute />', () => {
  const mockStore = configureStore();
  let store;
  let container;
  beforeEach(() => {
    store = mockStore({
      authentication: { ...initialAuthenticationState }, // authentication.session is false in the initialAuthenticationState
    });
    container = shallow(
      <MemoryRouter>
        <Provider store={store}>
          <RestrictedRoute />
        </Provider>,
      </MemoryRouter>
    );
  })
  test('redirects if not authenticated', () => {
    expect(container.find(Redirect).length).toBe(1);
  });
});
从“React”导入React;
从“酶”导入{shall};
从'react redux'导入{Provider};
从“react router dom”导入{Redirect,MemoryRouter};
从“redux模拟存储”导入configureStore;
从“../RestrictedRoute”导入RestrictedRoute;
从“还原程序/身份验证”导入{initialAuthenticationState};
描述(“”,()=>{
const mockStore=configureStore();
让商店;
让容器;
在每个之前(()=>{
商店=模拟商店({
身份验证:{…initialAuthenticationState},//authentication.session在initialAuthenticationState中为false
});
容器=浅(
,
);
})
测试('未经身份验证时重定向',()=>{
expect(container.find(Redirect.length).toBe(1);
});
});
我得到了以下结果,这不是我所期望的:

● <RestrictedRoute /> › redirects if not authenticated

    expect(received).toBe(expected)

    Expected value to be (using ===):
      1
    Received:
      0
●  › 如果未通过身份验证,则重定向
预期(已收到)。托比(预期)
预期值为(使用==):
1.
收到:
0

我遗漏了什么?

问题在于
太浅了。我不应该用它,因为这不是它的目的<代码>挂载
是我想要的功能