typescript - "No reducer provided for key X"console.error in redux jest 测试

标签 typescript redux jestjs

我有一个 reducer 测试通过了,但最后抛出了这个奇怪的错误:

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;

测试/newLineItemReducer.spec.ts

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

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

最佳答案

我遇到了同样的问题,正如@michael-radionov 在上面的评论部分中提到的,这是一个循环导入,我使用了 circular-dependency-plugin跟踪这些循环导入的插件,有关插件使用的更多信息可以在插件仓库或以下 article 中找到

关于typescript - "No reducer provided for key X"console.error in redux jest 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47441905/

相关文章:

javascript - 将 JQuery 插件添加到 typescript

javascript - 如何使用 Typescript 和 NodeJS 将模块注入(inject)到类中

angular - 如何根据下拉列表中的多项选择来过滤结果?

javascript - 小 Action 的 redux 状态

redux - 我已经在 next js 中使用 next-redux-wrapper 成功实现了 redux-persist

javascript - 用 Jest 模拟 i18Next

javascript - 测试捕获 Promise 错误

node.js - 您无权查看 Azure Ionic App 的此目录或页面

javascript - TypeError : Cannot read property 'type' of undefined functional components

reactjs - 如何测试使用自定义 TypeScript React Hook 的组件?