Jest/React-testing-library 不支持 React Helmet

Inf*_*dia 5 javascript reactjs jestjs react-helmet react-testing-library

我正在编写测试用例来测试我的主页,但在编译代码时开玩笑,并在头盔标签处中断。

我搜索并发现我应该用react- helmet-async替换react-helmet并使用HelmetProvider。

现在我陷入了以下错误。

console.error
    The above error occurred in the <HelmetDispatcher> component:
    
        at construct (/Users/utkarshgupta/Documents/Fynd/quintessa/node_modules/react-helmet-async/src/Dispatcher.js:8:22)
        at construct (/Users/utkarshgupta/Documents/Fynd/quintessa/node_modules/react-helmet-async/src/index.js:15:14)
        at div
        at App
        at construct (/Users/utkarshgupta/Documents/Fynd/quintessa/node_modules/react-helmet-async/src/Provider.js:37:5)
        at construct (/Users/utkarshgupta/Documents/Fynd/quintessa/node_modules/react-router/cjs/react-router.js:113:30)
        at construct (/Users/utkarshgupta/Documents/Fynd/quintessa/node_modules/react-router/cjs/react-router.js:202:35)
        at fn (/Users/utkarshgupta/Documents/Fynd/quintessa/node_modules/react-query/lib/react/QueryClientProvider.js:45:21)
        at fn (/Users/utkarshgupta/Documents/Fynd/quintessa/node_modules/react-redux/lib/components/Provider.js:21:20)
        at fn (/Users/utkarshgupta/Documents/Fynd/quintessa/src/__test__/helpers/test-utils.js:28:22)
Run Code Online (Sandbox Code Playgroud)

我正在使用自定义 SSR,因此我已将渲染包装到 HelmetProvider 中的字符串元素。

我的渲染函数:

export const render = (
  ui,
  {
    initialState = initialReducerState,
    store = createStore(rootReducer, initialState),
    ...renderOptions
  } = {}
) => {
  const Wrapper = ({ children }) => (
    <Provider store={store}>
      <QueryClientProvider client={queryClient} contextSharing={true}>
        <Router>
          <HelmetProvider>{children}</HelmetProvider>
        </Router>
      </QueryClientProvider>
    </Provider>
  );

  return {
    ...rtlRender(ui, {
      wrapper: Wrapper,
      ...renderOptions,
    }),
    store,
  };
};
Run Code Online (Sandbox Code Playgroud)

SSR JSX:

let jsx = extractor.collectChunks(
  <Provider store={store}>
    <QueryClientProvider client={queryClient}>
      <Hydrate state={dehydratedState}>
        <StaticRouter location={req.originalUrl} context={null}>
          <HelmetProvider context={helmetContext}>
            <App />
          </HelmetProvider>
        </StaticRouter>
      </Hydrate>
    </QueryClientProvider>
  </Provider>
); 
Run Code Online (Sandbox Code Playgroud)

上述错误不允许我测试在反应组件中使用 Helmet 和其他 seo 标签的所有页面。