我有如下标题组件:
import { useLocation } from "react-router-dom";
const Header = () => {
let route = useLocation().pathname;
return route === "/user" ? <ComponentA /> : <ComponentB />;
}
您将如何模拟这个 useLocation() 以获取用户路径?
我不能简单地在我的测试文件中调用 Header 组件,因为我收到错误:
类型错误:无法在 useLocation 读取未定义的属性“位置”
describe("<Header/>", () => {
it("call the header component", () => {
const wrapper = shallow(<Header />);
expect(wrapper.find(ComponentA)).toHaveLength(1);
});
});
我试过看起来类似于链接如何使用新的react-router钩子测试组件?但它没有用。
我试过如下:
const wrapper = shallow(
<Provider store={store}>
<MemoryRouter initialEntries={['/abc']}>
<Switch>
<AppRouter />
</Switch>
</MemoryRouter>
</Provider>,
);
jestExpect(wrapper.find(AppRouter)
.dive()
.find(Route)
.filter({path: '/abc'})
.renderProp('render', { history: mockedHistory})
.find(ContainerABC)
).toHaveLength(1);
来自使用浅层渲染测试react-router的链接,但它没有用。
请告诉我。
提前致谢。