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)
});
Тест не пройден
Кажется, что компонент, переданный в PrivateRoute, не существует, даже если аутентификация в состоянии true.
Как проверить, что компонент отображается или перенаправляется в PrivateRoute.