У меня есть компонент ниже,
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, нет ли выходаили нет.основываясь на коде my, он должен возвращать true, но полученное значение - false .. что я сделал не так?
также, когда я запускаю приведенный ниже тест,
it('+++Capturing Snapshot of CampaignLanding', () => {
const renderedValue = renderer.create(<CustomProvider><CampaignLanding {...LocalProps} /></CustomProvider>).toJSON()
expect(renderedValue).toMatchSnapshot();
});
показывает следующую ошибку,
Инвариантное нарушение: Вы не должны использовать <Switch>
за пределами <Router>
Не могли бы вы дать предложение?