Ich habe eine Komponente reagieren, die innerhalb höherer Ordnung Komponente withRouter wie unten eingeschlossen ist:Testing reagieren Komponente in withRouter eingeschlossen (vorzugsweise unter Verwendung von Scherz/Enzym)
module.exports = withRouter(ManageProfilePage);
Meine Strecken sind wie folgt:
<Route path="/" component={AdrApp}>
<IndexRoute component={Login}/>
<Route component={CheckLoginStatus}>
<Route path="manage-profiles/:profileId" component=
{ManageProfilesPage}/>
</Route>
<Route path="*" component={notFoundPage}/>
</Route>
ich einmal der Router Lifecycle-Methoden verwenden müssen, ist das, warum ich withRouter brauchen:
class ManageProfilePage extends React.Component {
componentDidMount() {
this.props.router.setRouteLeaveHook(this.props.route,() => {
...
})
render(){
...
}
}
Ich brauche diese Komponente Jest/Enzyme zu testen, und ich schrieb den Testfall wie folgt:
describe('manage profile page test suite',() => {
it('snapshot test',() => {
const setRouteLeaveHook =jest.fn();
let wrapper = shallow(
<ManageProfilePage params={{id : 25, router:
setRouteLeaveHook}}/>
);
expect(wrapper).toMatchSnapshot();
})
})
Die Frage ist es nicht eine Ebene tief rendert. Ich bin Einfügen den Schnappschuss unter:
exports[`manage drug term page test suites snapshot test 1`] = `
<ManageProfilePage
params={
Object {
"id": 25,
"router": [Function],
}
}
/>
`;
Gibt es eine andere Art und Weise ich meinen Testfall schreiben kann, so dass ich in der Lage bin ManageProfilePage atleast 1 Ebene tief zu machen? Es kann nicht gerendert werden, da es in WithRouter eingeschlossen ist. Wie testen wir diese Art von Komponenten?
das Problem ist seicht Rendering Rendering nicht nicht einmal 1 Ebene tief in meinem Fall –
Ich denke, es ist, Sie wissen nicht, was los ist auf genau innerhalb des withRouter - etwas "IS" wird gerendert, es ist nur nicht das, was du erwartest.Ich empfehle immer noch, deine eigene Komponente und nicht Wrapper zu testen – Patrick
Ich meine, es wird nicht auf Komponentenebene gerendert - natürlich wird es mit withRouter level rendern. –