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.

Relaterte artikler