typescript - "Ingen reducer oppgitt for nøkkel X" console.error i redux jest-test
Jeg har en test for reduceren som går gjennom, men som kaster denne merkelige feilen til slutt:
console.error node_modules/redux/lib/utils/warning.js:14
No reducer provided for key "newProducts"
src/reducer/index.ts
import newLineItemReducer from "./newLineItemReducer";
import renewedLineItemReducer from "./renewedLineItemReducer";
export interface LineItemState{
renewedProducts: LineItem[]
newProducts: LineItem[]
}
//used by both reducers
export interface LineItem{
...
}
// used by both "new" and "renewed" slice reducers
export function sharedFunction1() {
...
}
export default combineReducers<LineItemState>({
renewedProducts: renewedLineItemReducer,
newProducts: newLineItemReducer
});
src/reducer/newLineItemReducer.ts
import {LineItem, sharedFunction1 } from "./";
type Action = ...;
const newLineItemReducer =
(state: LineItem[] = [], action: Action): LineItem[] => {
switch (action.type) {
case ...:
sharedFunction1(state, action.foo);
}
}
export default newLineItemReducer;
test/newLineItemReducer.spec.ts
import newLineItemReducer from "@src/reducers/newLineItemReducer";
test("foo", () => {
let state = //
let action = //
const updatedState = newLineItemReducer(state, action);
...
});
Det merkelige er at det ikke finnes noen kode som faktisk kaller rot-reduceren fra index. Testen min kaller direkte på slice "newLineItemReducer". Det ser ut til at bare det å importere det delte grensesnittet og case-funksjonen fra reducer/index.ts forårsaker problemet (hvis jeg fjerner combineReducer-eksporten, oppstår det ingen feil)?
Svar #1
Jeg hadde det samme problemet, og som nevnt av @michael-radionov ovenfor i kommentarseksjonen, var dette en sirkulær import, og jeg brukte circular-dependency-plugin-pluginen for å spore disse sirkulære importene. Mer informasjon om bruk av plugin kan finnes på plugin-repoet eller i følgende artikkel.