Javascript TypeError:\u reactQuery.default不是构造函数
大家好,我正在使用jest和Ezyme为react应用程序编写一个单元测试,一切都进行得很顺利,但突然我因为QueryClient,QueryClient Provider而出错 我正在尝试从我的应用程序中获取快照,但出现此错误 它与react查询相关 有人能帮忙吗 这是我的密码 App.jsJavascript TypeError:\u reactQuery.default不是构造函数,javascript,reactjs,jestjs,enzyme,react-query,Javascript,Reactjs,Jestjs,Enzyme,React Query,大家好,我正在使用jest和Ezyme为react应用程序编写一个单元测试,一切都进行得很顺利,但突然我因为QueryClient,QueryClient Provider而出错 我正在尝试从我的应用程序中获取快照,但出现此错误 它与react查询相关 有人能帮忙吗 这是我的密码 App.js import { QueryClient, QueryClientProvider } from "react-query"; import { Dashboard } from &q
import { QueryClient, QueryClientProvider } from "react-query";
import { Dashboard } from "./components/Dashboard";
import "./App.css";
const queryClient = new QueryClient();
export function App() {
return (
<QueryClientProvider client={queryClient}>
<Dashboard />
</QueryClientProvider>
);
}
export default App;
您可以在App.test.js中将默认值导入为QueryClient
import { render, screen } from '@testing-library/react';
import { QueryClient, QueryClientProvider } from "react-query";
import renderer from 'react-test-renderer';
import { App } from './App';
describe("<App /> component:", () => {
const { queryClient } = new QueryClient({
defaultOptions: {
queries: {
staleTime: Infinity,
},
},
});
it('renders correctly', () => {
const tree = renderer
.create(
<QueryClientProvider client={queryClient}>
<App />
</QueryClientProvider>
)
.toJSON();
expect(tree).toMatchSnapshot();
});
test('renders loading', () => {
render(<App />);
const linkElement = screen.getByText(/Loading.../i);
expect(linkElement).toBeInTheDocument();
});
});
从“react query”导入{默认为QueryClient,QueryClientProvider}代码>
但react查询没有默认导出。在应用程序中将其作为命名导入导入:
从“react query”导入{QueryClient,QueryClientProvider}代码>我已将其更改为导出函数createWrapper(){const testQueryClient=createTestQueryClient();return({children})=>({children});}但是同样的错误仍然存在,它来自App.jsok,现在你展示了你已经模拟了整个react查询模块,并且没有包含QueryClientProvider,因此它不存在。嘲笑整个图书馆不是一个好的做法,那么我该怎么办?你读过文档中的测试指南了吗?我还写了一篇关于使用示例repo测试react查询的文章:
import { render, screen } from '@testing-library/react';
import { QueryClient, QueryClientProvider } from "react-query";
import renderer from 'react-test-renderer';
import { App } from './App';
describe("<App /> component:", () => {
const { queryClient } = new QueryClient({
defaultOptions: {
queries: {
staleTime: Infinity,
},
},
});
it('renders correctly', () => {
const tree = renderer
.create(
<QueryClientProvider client={queryClient}>
<App />
</QueryClientProvider>
)
.toJSON();
expect(tree).toMatchSnapshot();
});
test('renders loading', () => {
render(<App />);
const linkElement = screen.getByText(/Loading.../i);
expect(linkElement).toBeInTheDocument();
});
});
import '@testing-library/jest-dom';
import { configure } from "enzyme";
import Adapter from '@wojtekmaj/enzyme-adapter-react-17';
configure({adapter: new Adapter()});
jest.mock('react-chartjs-2', () => ({
Bar: () => null, // add any additional chart types here
Line: () => null
}));
jest.mock('react-query', () => ({
useQuery: () => ({ isLoading: false, isError: false, data: [], }),
useMutation: () => ({ mutate: {}, isError: false, isLoading: false }),
useQueryClient: () => null,
}));