如何覆盖使用由开玩笑反应路由器匿名函数?

问题描述 投票:1回答:1

如何测试用于供应组件的组件属性匿名函数?如果我们不能开玩笑测试匿名函数,那么应该是什么办法?

<BrowserRouter>
    <Switch>
        <Route path={routerPath1} component={props => <MyComponent1 {...props} customProperty={BlaBlaBla} />
        <Route path={routerPath2} component={props => <MyComponent2 {...props} customProperty={BlaBlaBla} />
    </Switch>
</BrowserRouter>

component={props => <MyComponent2 {...props} customProperty={BlaBlaBla} /> is not accessible by test.
reactjs unit-testing react-router jestjs
1个回答
1
投票

首先,BrowserRouter不应该在单元测试中使用。组件的层次应该允许改用MemoryRouter。然后路由组件可以通过改变路由进行测试。

可替代地,匿名功能可以达到并单独测试:

const RouteComponent = wrapper.find(Route).at(0).props().component;
const routeComponentWrapper = shallow(<RouteComponent/>);
...

可测试性可通过干燥的代码最多得到改善。因为在这两种途径的组件是相似的,它们可以通过,增加了customProperty={BlaBlaBla}支撑,并且可以在测试中被窥探单个高次成分被创建。

© www.soinside.com 2019 - 2024. All rights reserved.