如何测试用于供应组件的组件属性匿名函数?如果我们不能开玩笑测试匿名函数,那么应该是什么办法?
<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.
首先,BrowserRouter
不应该在单元测试中使用。组件的层次应该允许改用MemoryRouter
。然后路由组件可以通过改变路由进行测试。
可替代地,匿名功能可以达到并单独测试:
const RouteComponent = wrapper.find(Route).at(0).props().component;
const routeComponentWrapper = shallow(<RouteComponent/>);
...
可测试性可通过干燥的代码最多得到改善。因为在这两种途径的组件是相似的,它们可以通过,增加了customProperty={BlaBlaBla}
支撑,并且可以在测试中被窥探单个高次成分被创建。