Мелкий не работает должным образом в реакции теста
У меня есть компонент ниже,
class CampaignLanding extends Component {
constructor(props) {
super(props);
}
render() {
let { hasError } = this.props;
if (hasError) {
return <Page404 />;
} else {
return (
<div>
<Switch>
<Route
path="/vacions/:delogin"
component={Login}
/>
</Switch>
<div
className={classNames('filter-overlay', {
show: showFilterOverlay
})}
/>
</div>
);
}
}
}
function mapStateToProps(state) {
if (state.user) {
return {
user: state.user.content
};
} else {
return {
id: state.app.id
};
}
}
function mapDispatchToProps(dispatch) {
return {
actions: {
getUser: bindActionCreators(getUser, dispatch)
}
};
}
export default connect(mapStateToProps, mapDispatchToProps, null, {
withRef: true
})(CampaignLanding);
Я попытался запустить спецификацию, как показано ниже,
const store = configureStore(window.REDUX_STATE || {});
const LocalProps = {
match: {
hasError: true
}
};
// Snapshot for Home React Component
export const CustomProvider = ({ children }) => {
return (
<Provider store={store}>
{children}
</Provider>
);
};
// Snapshot for Home React Component
describe('>>>Campaign Landing --- Snapshot', () => {
it('+++Capturing Snapshot of CampaignLanding', () => {
const wrapper = shallow(<CustomProvider><CampaignLanding {...LocalProps} /></CustomProvider>);
expect(wrapper.contains(<Page404 />)).toBe(true);
});
});
Я использовал этот контрольный пример, чтобы проверить страницу 404, выход или нет. основываясь на моем коде, он должен вернуть true, но полученное значение - false.. что я сделал не так?
также когда я запускаю тест ниже,
it('+++Capturing Snapshot of CampaignLanding', () => {
const renderedValue = renderer.create(<CustomProvider><CampaignLanding {...LocalProps} /></CustomProvider>).toJSON()
expect(renderedValue).toMatchSnapshot();
});
это показывает ошибку ниже,
Нарушение Инварианта: Вы не должны использовать <Switch>
вне <Router>
не могли бы вы дать предложение?