我有一个 React 组件,它包含在高阶组件 withRouter 中,如下所示:
module.exports = withRouter(ManageProfilePage);
我的路线如下:
<Route path="/" component={AdrApp}>
<IndexRoute component={Login}/>
<Route component={CheckLoginStatus}>
<Route path="manage-profiles/:profileId" component=
{ManageProfilesPage}/>
</Route>
<Route path="*" component={notFoundPage}/>
</Route>
我需要使用一次 Router 生命周期方法,这就是我需要 withRouter 的原因:
class ManageProfilePage extends React.Component {
componentDidMount() {
this.props.router.setRouteLeaveHook(this.props.route, () => {
...
})
render(){
...
}
}
我需要使用 Jest/Enzyme 测试这个组件,我编写了如下的测试用例:
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();
})
})
问题是它没有渲染一层深。我正在粘贴下面的快照:
exports[`manage drug term page test suites snapshot test 1`] = `
<ManageProfilePage
params={
Object {
"id": 25,
"router": [Function],
}
}
/>
`;
有没有什么不同的方法可以编写我的测试用例,以便我能够将 ManageProfilePage 呈现至少 1 级深?它无法渲染,因为它包含在 WithRouter 中?我们如何测试这些类型的组件?