redux jest 测试中“没有为 X 键提供减速器”console.error

NSj*_*nas 4 typescript jestjs redux

我有一个正在通过的减速器测试,但最后抛出了这个奇怪的错误:

console.error node_modules/redux/lib/utils/warning.js:14
    No reducer provided for key "newProducts"
Run Code Online (Sandbox Code Playgroud)

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
});
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

测试/newLineItemReducer.spec.ts

import newLineItemReducer from "@src/reducers/newLineItemReducer";
test("foo", () => {
   let state = //
   let action = //
   const updatedState = newLineItemReducer(state, action);
   ...
});
Run Code Online (Sandbox Code Playgroud)

奇怪的是,没有代码实际从索引调用根减速器。我的测试是直接调用切片“newLineItemReducer”。似乎只是导入共享接口和案例函数的行为reducer/index.ts导致了问题(如果我删除combineReducer导出,则不会出现错误)?

小智 5

我遇到了同样的问题,正如 @michael-radionov 上面在评论部分中提到的,这是一个循环导入,我利用循环依赖插件插件来跟踪这些循环导入,有关插件使用的更多信息可以在插件上找到回购协议或在下面的文章中