reactjs - Jest ReferenceError: Kann nicht auf '_default' vor der Initialisierung zugegriffen werden
Ich habe einen seltsamen Fehler beim Testen meiner Redux-Toolkit-Komponente mit Jest festgestellt. Ich verwende NextJS als mein React-Framework, kann aber irgendwie die Darstellung einer Komponente in Jest nicht überwinden. Ich habe meinen eigenen Renderer für Tests folgendermaßen eingerichtet
import React from 'react';
import { render as rtlRender } from '@testing-library/react';
import { Provider } from 'react-redux';
import { store } from '../../@core/state/store'
const render = (
ui:any, {
initialState = {...store.getState()},
...renderOptions
} = {}
) => {
const Wrapper = ({ children } : any) => (
<Provider store={store}>{children}</Provider>
);
return rtlRender(ui, { wrapper: Wrapper, ...renderOptions});
};
export * from '@testing-library/react';
export { render};
und ich habe mein Slice so eingerichtet
export const AuthSlice = createSlice({
name: "auth",
initialState,
reducers: {
started: (state) => {
state.status = 'pending'
},
success: (state, { payload }: PayloadAction<User | null>) => {
state.status = 'successful'
state.user = payload
},
reset: (state) => {
state.status = 'idle'
},
failed: (state, payload: PayloadAction<string>) => {
state.status = 'failed'
state.message = payload.payload
}
},
})
export const { started, success, failed, reset } = AuthSlice.actions
export default AuthSlice.reducer
In meinem Test habe ich einen einfachen Test wie diesen
import ForgotPassword from "../../components/Authentication/forgot-password";
import "@testing-library/jest-dom";
import { render, screen, fireEvent } from "../utils";
describe("Forgot Password Component", () => {
it("it should render the input field", () => {
render(<ForgotPassword />);
})
});
Aber wann immer ich den Test ausführe, erhalte ich diesen Fehler
ReferenceError: Cannot access '_default' before initialization
135 | export const { started, success, failed, reset } = AuthSlice.actions
136 |
> 137 | export default AuthSlice.reducer
| ^
138 |
Ich habe mehrere Recherchen und Korrekturen durchgeführt, konnte es aber nicht beheben. Wenn ich das Rendern aus dem Test entferne, funktioniert alles einwandfrei.
Übrigens, das ist meine Store-Konfiguration
import { persistStore, persistReducer, FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER } from 'redux-persist'
import storage from "redux-persist/lib/storage";
import reducers from "./reducers";
import { configureStore } from "@reduxjs/toolkit";
const persistConfig = {
key: 'my-store',
storage
}
const persistedReducer = persistReducer(persistConfig, reducers)
export const store = configureStore({
reducer: persistedReducer,
middleware: (getDefaultMiddleware) =>
getDefaultMiddleware({
serializableCheck: {
ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER],
},
}),
})
export type RootState = ReturnType<typeof store.getState>;
export type AppDispatch = typeof store.dispatch;
export const persistor = persistStore(store);
Jede Hilfe wird geschätzt