Тестирование PrivateRoute в реагирующем роутере - PullRequest
1 голос
/ 24 июня 2019

https://reacttraining.com/react-router/web/example/auth-workflow

Мое внедрение Private-Route в документах activ-router-dom

function PrivateRoute({ authenticated, ownProps }) {

    let {component:Component, ...rest} = ownProps


     //PrivateRoute, If  not authenicated ie  false, redirect
    return (
      <Route
      //  JSX Spread sttributes to get path for Route
        {...rest}
        render={() =>  authenticated ? (
            <Component />
          ) : 
          <Redirect
              to={{pathname: "/" }}
            />
        }
      />
    );
  }

  export default PrivateRoute

PrivateRoute был подключенным компонентом, получающим статус аутентификации из Redux-Store.

Я пытаюсь протестировать подключенный компонент, используя redux-mock-store и монтировать из фермента.

import configureStore from 'redux-mock-store'
const mockStore = configureStore()
const authStateTrue = {auth: {AUTHENTICATED: true}}; 

 test('Private path renders a component when auntentication is true', () => {

    const store = mockStore(authStateTrue)
    const AComponent = () => <div>AComponent</div>
    const props = {path:"/aprivatepath" ,component:<AComponent/>};

    let enzymeWrapper = mount(<Provider store={store}>
                                    <BrowserRouter>
                                    <PrivateRoute path="/aprivatepath" component={AComponent}/>
                                    </BrowserRouter>                              
                          </Provider>);


    expect(enzymeWrapper.exists(AComponent)).toBe(true)
  });

Тест не пройден enter image description here

Кажется, что компонент, переданный в PrivateRoute, не существует, даже если аутентификация в состоянии true.

Как проверить, что компонент отображается или перенаправляется в PrivateRoute.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...