我使用的是Reaction-Testing-Library,我有这样的main.tsx
文件,所有Redux-Toolkit和Reaction-Router包装器如下所示:
ReactDOM.createRoot(document.getElementById("root")!).render(
<React.StrictMode>
<Provider store={store}>
<Suspense fallback={<LoadingSpinner />}>
<BrowserRouter>
<Routes>
<Route path="/*" element={<App />} />
</Routes>
</BrowserRouter>
</Suspense>
</Provider>
</React.StrictMode>,
);
现在,当我try 测试使用任意useDispatch
或useNavigate
的任何组件时,测试失败,除非我使用下面这样的提供程序包装该组件:
test("Inputs should be initially empty", () => {
render(
<Provider store={store}>
<BrowserRouter>
<Login />
</BrowserRouter>
,
</Provider>,
);
const emailInput: HTMLInputElement = screen.getByRole("textbox", {
name: /email/i,
});
expect(emailInput.value).toBe("");
});
现在,测试通过了,一切都很好.
我的问题是,有没有一种方法可以最初包装我要用这些包装器默认测试的所有组件?这样我就不必每次都用它们包装我的所有测试组件了?