javascript - 测试rootReducer中是否已经导入了所有reducer

标签 javascript reactjs redux react-redux

我有一个 rootReducer,它像这样导入所有单独的 reducer:

import { combineReducers } from 'redux';
import departments from './departments';
import indicators from './indicators';
import versions from './versions';
import projects from './projects';

// combine all reducers to a single reducer, state will be linked to a reducer via the key used here
const rootReducer = combineReducers({
  versions,
  departments,
  indicators,
  projects,
});

export default rootReducer;

由于这个 reducer 导入所有东西很重要,我认为测试 ./src/reducers 中定义的所有 reducer 是否被导入是有意义的。我能想到的唯一方法是使用 fs 检查 ./src/reducers 中的文件数(没有 index,或者 rootReducer) 并检查 rootReducer 是否包含那么多的 reducer。

似乎是一个丑陋的测试,也有点脆弱。但是,当您忘记包含 reducer 时,收到测试失败的通知还是很不错的。测试是否所有 reducer 都已导入的最佳方法是什么?

最佳答案

我听说你来自哪里,但我认为你不想在你的测试中处理这个问题。随着应用程序的增长,您可能需要更深的 reducer 树。例如。您的 projects reducer 可能由多个子 reducer 组成,您必须管理需要从何处导入哪些 reducer。文件系统测试会越来越脆弱。通常,导入和文件结构是项目的实现细节,您希望测试项目的行为。

但是想要在连接 reducer 失败时立即得到反馈是完全有道理的。我会尝试在构建级别处理它。假设你正在使用 Webpack,也许可以查看 this plugin可以解决你的问题。它检测未使用的导出。将其添加到您的插件中

new UnusedFilesWebpackPlugin({ pattern: 'src/reducers/**' })

当您有一个未被导入的文件时,您的构建将警告您。由于它适用于模块,因此您不必担心目录结构(除了确保模式匹配您要检查的所有文件之外)。

关于javascript - 测试rootReducer中是否已经导入了所有reducer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39642573/

相关文章:

javascript - 在我的案例中,哪种显示动态单选按钮的方法更好?

javascript - 如何在学习 Javascript 的过程中取得进展

javascript - Webpack 和 Javascript 变量范围,在所有模块中使用 var = 可以吗?

javascript - 即使在分派(dispatch)操作并接收有效负载后,也不会调用Reducer

javascript - Angular NgRx - 当其他操作返回值时调度一个有效的操作

reactjs - Redux 工具包根据 api 响应更新状态

javascript - 使用 vue 的 chrome 中的 hls.js 不更新 m3u8 播放列表

javascript - 如何正确使用 AngularJS 中的过滤器来突出显示所有 JSON 中的单词?

javascript - react : TypeError: Cannot read property 'setState' of undefined

css - 从 React 索引链接到 css 文件