【发布时间】:2022-11-11 05:48:36
【问题描述】:
我需要一种方法来测试一个组件,其中两个其他组件是延迟加载的。
我们正在使用webpack 模块联合.所以这里的ComponentOne 和ComponentTwo 是在App 组件中延迟加载的微前端。所以这里的App 组件是容器应用程序,它包含两个应用程序并提供它们之间的路由。
我的App.tsx 看起来像这样:
import { Suspense, lazy } from 'react';
import { Route, Routes } from 'react-router-dom';
const ComponentOne = lazy(() => import('components/ComponentOne));
const ComponentTwo = lazy(() => import('components/ComponeentTwo'));
export const App = () => {
return (
<Suspense fallback={<div>FallbackDummy</div>}>
<Routes>
<Route path="/" element={<ComponentOne />} />
<Route path="/two" element={<ComponentTwo />} />
</Routes>
</Suspense>
);
};
这个 App 组件在我的bootstrap.tsx 文件中使用,如下所示:
import { render } from 'react-dom';
import { BrowserRouter } from 'react-router-dom';
import { App } from './app/app';
render(
<BrowserRouter>
<App />
</BrowserRouter>,
document.getElementById('root'),
);
我的App.test.tsx 看起来像这样:
import { Suspense } from 'react';
import {
render,
RenderResult,
} from '@testing-library/react';
import { App } from './App';
import '@testing-library/jest-dom';
describe('App component', () => {
let testedComponent: RenderResult;
beforeEach(() => {
testedComponent= render(
<Suspense fallback={<div>FallbackDummy</div>}>
<App />
</Suspense>
);
});
test('should match snapshot', () => {
expect(testedComponent).toMatchSnapshot();
});
});
测试在没有 <Routes> 和 <Route> 组件的情况下运行(因此仅包含在 中)。但我无法在测试中使用路由器。
【问题讨论】:
-
嘿,你有没有解决这个问题?
标签: reactjs webpack jestjs react-testing-library webpack-module-federation