小编cxg*_*end的帖子

使用 React Router V6 测试 React 组件

我知道 React 测试库有一个使用 React 路由器进行测试的示例,但我无法让它工作(我想是因为我使用的是 React 路由器 V6)。

基本上,我需要路由器测试,因为我有使用 useParams() 来获取部分 url 的详细信息组件。没有它我无法渲染组件。

这是我让它工作的尝试(是的,该页面也需要 apollo,尽管它并不真正需要 redux)。

const AllTheProviders = ({children, initialRoutes}) => {
    return (
        <ApolloProvider client={client}>
            <Provider store={store}>
                <MemoryRouter>
                    {children}
                </MemoryRouter>
            </Provider>
        </ApolloProvider>
    );
}
const customRender = (ui, options) => render(ui, {wrapper: AllTheProviders, ...options})


beforeEach(() => {
    window.history.pushState({}, 'Test page',"/details/url-param-the-component-needs")
    customRender(<App/>);
});
Run Code Online (Sandbox Code Playgroud)

毫不奇怪,但这不起作用。我假设 window.history.pushState() 不适用于 React Router V6。我尝试使用 useNavigate(),但这在组件之外不起作用。

如果有人对我如何使这项工作有任何想法。我将不胜感激。

reactjs react-router react-router-dom react-testing-library

16
推荐指数
2
解决办法
1万
查看次数